2007
年
3
月
19
日星期一
?
?
第二章
責任驅動設計
設計挑戰
對象設計過程中,面臨的兩個挑戰:
l????????
正確了解用戶的關注點和需要。
l????????
以能讓用戶更理解的方式表達設計
?
關于對象
?? P43
對象是描述概念、事物、特有責任和交互的最好方式。
我覺得作者在這里談論的對象應該是領域對象,實際上就是說通過對象來描述需要實現的系統。我可以想見這樣一個思維的抽象空間,一些對象再各進其職,就好像第一章所謂的對象社區一樣,我想現在的問題就是如何識別對象了!下一章叫發現對象,還有
Fowler
的《分析模式》都是在將從生活或領域中尋找和發現對象的,最近在做畢設,也在想到底怎么用對象的方式來描述我所做的系統呢?——雖然這個系統已經做完了,而且我也采用了面向對象技術,并且我昨天也說過,在看這些書之前我已經覺得我們應該以一種自然的方式了設計對象,對象就是有生命的卡通形象,但是那時候我還不是很系統的思考這個問題,而且由于整個系統是采用結構化的方式構建的,因此某些對象的職責已經被其他的函數實現了,我就沒有創建相應的對象,而且根據“信息專家”(
GRASP
)等模式,我還需要重新思考一下我當初設計的對象是否合理,再問一次自己,它們是當之無愧的對象嗎?
?
概念對象
向對象設計邁出的第一步是描述候選對象的關鍵概念。這些概念是直接與核心業務領域相關的高層概念。關于系統的核心是什么,作者認為這要取決于應用軟件的側重點和它的期望結果。核心可以指:
l????????
關鍵領域內的對象、概念以及進程。
l????????
實現了復雜算法的對象
l????????
技術相關的底層基礎架構
l????????
管理應用程序任務的對象
l????????
用戶界面對象
?
我覺得很關鍵的一點是作者幫我們整理了一下應該關注的對象,實際上這些一看就知道是對的,但是往往我們在真正應用時考慮的不是很周全,或者很難分清主次。
?
CRC
卡
?? CRC
是候選(
Candidates
)、責任(
Responsibilities
)、協作者(
Collaborators
)
3
者的縮寫。在
CRC
卡的正面記錄對象的信息和執行的行為。就是所謂的責任和協作者。責任指的是一個對象必須了解的信息和執行的動作。協作者是指在對象履行責任的過程中,其他的被該對象驅動履行其相關責任的對象。背面是候選對象的特征,包括候選對象的簡介和使用的模式。候選指的就是該卡片記錄的候選對象。