突破
何為突破,DDD的實(shí)踐過程是漸進(jìn)式的。你的重構(gòu)與回報(bào)不是呈線性關(guān)系的。通常會(huì)在具體的某個(gè)點(diǎn)會(huì)出現(xiàn)一個(gè)飛躍。這個(gè)飛躍很有意義,同時(shí)也充滿了危險(xiǎn)。
隱式概念->顯式概念
何為隱式概念
就是需求中關(guān)注的部分,但是在你的結(jié)構(gòu)中沒有體現(xiàn)這一部分。這部分概念就被隱藏起來了。
如何發(fā)現(xiàn)隱式概念
- 與領(lǐng)域?qū)<姨接?/li>
- 思考領(lǐng)域的矛盾部分
- 查閱書籍驗(yàn)證模型
- 發(fā)現(xiàn)一些約束
什么需要被轉(zhuǎn)換成顯式
- 特定的領(lǐng)域概念
- 約束條件
- 領(lǐng)域關(guān)鍵過程
Tips
何時(shí)約束需要單獨(dú)提取成一個(gè)類
- 計(jì)算約束的數(shù)據(jù)從定義上并不屬于這個(gè)對(duì)象
- 相關(guān)規(guī)則在不同的類中重復(fù)出現(xiàn)
- 很多設(shè)計(jì)和需求談?wù)摱紘@這些約束,而這段代碼隱藏在過程代碼中
柔性設(shè)計(jì)
目的
方便重構(gòu),方便開發(fā)人員開發(fā)
方式
- 命名需要表意
- 方法無副作用(不需要一層一層的觀察它的行為)
- 可以使用斷言明確表示
- 低耦合
- 閉合操作(返回類型與參數(shù)類型相同)
設(shè)計(jì)模式在模型中的應(yīng)用
從代碼層面它是技術(shù)設(shè)計(jì)模式,從模型上看它是概念模型。
策略模式
通過策略模式分離不同的概念。側(cè)重點(diǎn)在表示概念的能力。
組合模式
使用組合模式可以根據(jù)業(yè)務(wù)組合不同的對(duì)象。
重構(gòu)加深理解
關(guān)注3個(gè)點(diǎn)
- 以領(lǐng)域?yàn)楸?/li>
- 用一種不同的方式看待事物
- 始終堅(jiān)持與鄰域?qū)<覍?duì)話
因?yàn)槟P团c領(lǐng)域不同才會(huì)開始領(lǐng)域的重構(gòu)。
何時(shí)重構(gòu)
- 設(shè)計(jì)沒有表達(dá)團(tuán)隊(duì)對(duì)領(lǐng)域的最新理解
- 重要的概念被隱藏在設(shè)計(jì)中
- 發(fā)現(xiàn)一個(gè)能令某個(gè)重要的設(shè)計(jì)部分變得更靈活的機(jī)會(huì)