實(shí)體:有一類對(duì)象看上去好像擁有標(biāo)識(shí)符,它的標(biāo)識(shí)符在歷經(jīng)軟件的各種狀態(tài)后仍然保持一致。
值對(duì)象:如果值對(duì)象是可共享的,那么它們應(yīng)該是不可變的。值對(duì)象應(yīng)該保持盡量的簡(jiǎn)單。當(dāng)其他當(dāng)事人需要一個(gè)值對(duì)象時(shí),可以簡(jiǎn)單地傳遞值,或者創(chuàng)建一個(gè)副本。
服務(wù): 1. 服務(wù)執(zhí)行的操作涉及一個(gè)領(lǐng)域概念,這個(gè)領(lǐng)域概念通常不屬于一個(gè)實(shí)體或者值對(duì)象。
2. 被執(zhí)行的操作涉及到領(lǐng)域中的其他的對(duì)象。
3.操作是無(wú)狀態(tài)的。
軟件代碼應(yīng)該具有高層次的內(nèi)聚性和低層次的耦合度:最常用到的兩個(gè)是通信性內(nèi)聚和功能性內(nèi)聚。通信性內(nèi)聚通常在模塊的部件操作相同的數(shù)據(jù)時(shí)使用。把它們分到一組很有意義,因?yàn)樗鼈冎g存在很強(qiáng)的關(guān)聯(lián)性。功能性內(nèi)聚在模塊中的部件協(xié)同工作以完成定義好 的任務(wù)時(shí)使用。
聚合是一個(gè)用來(lái)定義對(duì)象所有權(quán)和邊界的領(lǐng)域模式。工廠和資源庫(kù)是另外的兩個(gè)設(shè)計(jì)模式,用來(lái)幫助我們處
理對(duì)象的創(chuàng)建和存儲(chǔ)問(wèn)題。聚合:是針對(duì)數(shù)據(jù)變化可以考慮成一個(gè)單元的一組相關(guān)的對(duì)象。
工廠:幫助封裝復(fù)雜的對(duì) 象創(chuàng)建過(guò)程,它就是工廠 (Factory)
資源庫(kù):資源庫(kù)會(huì)保存對(duì)某些對(duì)象的引用。當(dāng)一個(gè)對(duì)象被創(chuàng)建出來(lái)時(shí),它可以被保存到資源庫(kù)中,然后以后使用時(shí)可從資源庫(kù)中檢索到。如果客戶程序從資源庫(kù)中請(qǐng)求一個(gè)對(duì)象,而資源庫(kù)中并沒(méi)有它,就會(huì)從存儲(chǔ)介質(zhì)中獲取它。換種說(shuō)法是,資源庫(kù)作為一個(gè)全局的可訪問(wèn)對(duì) 象的存儲(chǔ)點(diǎn)而存在。
重構(gòu):重構(gòu)是不改變應(yīng)用行為而重新設(shè)計(jì)代碼以讓它更好的過(guò)程。
簡(jiǎn)化的建模:關(guān)于建模的第一件事是閱讀業(yè)務(wù)規(guī)范,從中尋找名詞和動(dòng)詞。名詞被轉(zhuǎn)換成類,而動(dòng)詞則成為方法。
最好的實(shí)現(xiàn)過(guò)程的方式是使用服務(wù)。其他的處理過(guò)程的不同的方式如,將算法封裝進(jìn)一個(gè)策略對(duì)象。
約束方法化:將約束置于一個(gè)單獨(dú)的方法讓它顯示化有很多優(yōu)點(diǎn)。它很容易閱
讀,如果約束變得更復(fù)雜,這可以為向該方法增加更多邏輯提供增長(zhǎng)空間。
感謝infoq!