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