I know what I know,I'll sing what I said,We come and we go ...
--I Know What I Know,paul simon
相對(duì)于分歧較少的靜態(tài)DomainModel結(jié)構(gòu),DomainModel的動(dòng)態(tài)特征一直是撲朔迷離,讓人捉摸不定。以至于出現(xiàn)了很多爭(zhēng)論,分歧在哪里呢?如果我們把DomainModel整個(gè)動(dòng)態(tài)特征看作一個(gè)集合,那么,各種爭(zhēng)論的分歧就在于“該集合該如何分配到對(duì)象上?”。
在Rebecca Wirfs-Brock的《對(duì)象設(shè)計(jì)》中,提出了OO三種可選的控制風(fēng)格:集中式、分散式和委托式。
集中式:這是過程式程序遺傳的產(chǎn)物。系統(tǒng)中存在兩類分工明確的對(duì)象,分別模擬結(jié)構(gòu)化編程風(fēng)格的“算法”和“數(shù)據(jù)”。在算法對(duì)象周圍是一群僅僅持有信息的數(shù)據(jù)對(duì)象。聰明的算法對(duì)象根據(jù)需要向數(shù)據(jù)對(duì)象請(qǐng)求數(shù)據(jù),處理得到的數(shù)據(jù),向數(shù)據(jù)對(duì)象寫入處理結(jié)果。應(yīng)用邏輯的控制權(quán)完全由算法對(duì)象掌握,算法對(duì)象實(shí)質(zhì)上是事必躬親的控制對(duì)象。集中式的一個(gè)變種,是多個(gè)控制對(duì)象共同承擔(dān)應(yīng)用邏輯,這等價(jià)于功能分解。這種模式的優(yōu)點(diǎn)在于,通過考察少數(shù)聰明的控制對(duì)象就可以弄清楚應(yīng)用邏輯。然而,把動(dòng)態(tài)特征集合,放入少量控制對(duì)象,要比放入較多智能對(duì)象復(fù)雜。另外,結(jié)構(gòu)化編程風(fēng)格面臨的問題依然存在,由于數(shù)據(jù)對(duì)象被多個(gè)控制對(duì)象使用,處理該數(shù)據(jù)對(duì)象的方法,被分散到很多類中,不同數(shù)據(jù)對(duì)象間持有信息的一致性,通過控制對(duì)象間接維護(hù),要做到“單點(diǎn)維護(hù)”并不容易。 如果想在數(shù)據(jù)對(duì)象間移動(dòng)持有信息,將變得困難,因?yàn)樾枰瑫r(shí)維護(hù)很多關(guān)聯(lián)的控制對(duì)象。
分散式:這是相對(duì)集中式的另外一個(gè)極端。動(dòng)態(tài)特征集合被均勻的分散到了每一個(gè)對(duì)象。沒有哪個(gè)對(duì)象比其他的更聰明。應(yīng)用邏輯嚴(yán)格按照對(duì)象間的關(guān)聯(lián)來驅(qū)動(dòng)完成,各對(duì)象僅僅同它關(guān)聯(lián)的對(duì)象打交道。好比一塊由大量齒輪組成的機(jī)械表。集中式的優(yōu)點(diǎn)正是分散式的缺點(diǎn),要弄清楚應(yīng)用邏輯,需要跟蹤大量對(duì)象間的請(qǐng)求/響應(yīng)。
委托式:介于上述兩者之間,動(dòng)態(tài)特征集合被層次化的分配到各對(duì)象中。控制者的職責(zé)被弱化為協(xié)調(diào)者,協(xié)調(diào)者比控制者需要知道的要少。數(shù)據(jù)對(duì)象由于承擔(dān)了部分動(dòng)態(tài)特征,也“聰明”起來,數(shù)據(jù)對(duì)象也充當(dāng)起協(xié)調(diào)自身內(nèi)部關(guān)系的角色。協(xié)調(diào)者只需要協(xié)調(diào)其他協(xié)調(diào)者和聰明起來的數(shù)據(jù)對(duì)象。除了層次上的區(qū)別外,他們都可以看作協(xié)調(diào)者。層次的出現(xiàn),意味著可以在不同的層次理解應(yīng)用邏輯,給任務(wù)劃分提供了合適的界限。對(duì)子層次細(xì)節(jié)的忽略,保證了在系統(tǒng)變化時(shí)不會(huì)涉及過多對(duì)象。當(dāng)然同集中式相比,需要考察更多不同層次的對(duì)象,單個(gè)應(yīng)用邏輯不是非常直觀。
我認(rèn)為DomainModel的控制風(fēng)格,應(yīng)采用“委托式”。Model的各部分如同人體的細(xì)胞和組織,都略帶智能,有明顯的分工,協(xié)作完成任務(wù)。 當(dāng)然,這里面還有很多問題需要仔細(xì)考慮。
--I Know What I Know,paul simon
相對(duì)于分歧較少的靜態(tài)DomainModel結(jié)構(gòu),DomainModel的動(dòng)態(tài)特征一直是撲朔迷離,讓人捉摸不定。以至于出現(xiàn)了很多爭(zhēng)論,分歧在哪里呢?如果我們把DomainModel整個(gè)動(dòng)態(tài)特征看作一個(gè)集合,那么,各種爭(zhēng)論的分歧就在于“該集合該如何分配到對(duì)象上?”。
在Rebecca Wirfs-Brock的《對(duì)象設(shè)計(jì)》中,提出了OO三種可選的控制風(fēng)格:集中式、分散式和委托式。
集中式:這是過程式程序遺傳的產(chǎn)物。系統(tǒng)中存在兩類分工明確的對(duì)象,分別模擬結(jié)構(gòu)化編程風(fēng)格的“算法”和“數(shù)據(jù)”。在算法對(duì)象周圍是一群僅僅持有信息的數(shù)據(jù)對(duì)象。聰明的算法對(duì)象根據(jù)需要向數(shù)據(jù)對(duì)象請(qǐng)求數(shù)據(jù),處理得到的數(shù)據(jù),向數(shù)據(jù)對(duì)象寫入處理結(jié)果。應(yīng)用邏輯的控制權(quán)完全由算法對(duì)象掌握,算法對(duì)象實(shí)質(zhì)上是事必躬親的控制對(duì)象。集中式的一個(gè)變種,是多個(gè)控制對(duì)象共同承擔(dān)應(yīng)用邏輯,這等價(jià)于功能分解。這種模式的優(yōu)點(diǎn)在于,通過考察少數(shù)聰明的控制對(duì)象就可以弄清楚應(yīng)用邏輯。然而,把動(dòng)態(tài)特征集合,放入少量控制對(duì)象,要比放入較多智能對(duì)象復(fù)雜。另外,結(jié)構(gòu)化編程風(fēng)格面臨的問題依然存在,由于數(shù)據(jù)對(duì)象被多個(gè)控制對(duì)象使用,處理該數(shù)據(jù)對(duì)象的方法,被分散到很多類中,不同數(shù)據(jù)對(duì)象間持有信息的一致性,通過控制對(duì)象間接維護(hù),要做到“單點(diǎn)維護(hù)”并不容易。 如果想在數(shù)據(jù)對(duì)象間移動(dòng)持有信息,將變得困難,因?yàn)樾枰瑫r(shí)維護(hù)很多關(guān)聯(lián)的控制對(duì)象。
分散式:這是相對(duì)集中式的另外一個(gè)極端。動(dòng)態(tài)特征集合被均勻的分散到了每一個(gè)對(duì)象。沒有哪個(gè)對(duì)象比其他的更聰明。應(yīng)用邏輯嚴(yán)格按照對(duì)象間的關(guān)聯(lián)來驅(qū)動(dòng)完成,各對(duì)象僅僅同它關(guān)聯(lián)的對(duì)象打交道。好比一塊由大量齒輪組成的機(jī)械表。集中式的優(yōu)點(diǎn)正是分散式的缺點(diǎn),要弄清楚應(yīng)用邏輯,需要跟蹤大量對(duì)象間的請(qǐng)求/響應(yīng)。
委托式:介于上述兩者之間,動(dòng)態(tài)特征集合被層次化的分配到各對(duì)象中。控制者的職責(zé)被弱化為協(xié)調(diào)者,協(xié)調(diào)者比控制者需要知道的要少。數(shù)據(jù)對(duì)象由于承擔(dān)了部分動(dòng)態(tài)特征,也“聰明”起來,數(shù)據(jù)對(duì)象也充當(dāng)起協(xié)調(diào)自身內(nèi)部關(guān)系的角色。協(xié)調(diào)者只需要協(xié)調(diào)其他協(xié)調(diào)者和聰明起來的數(shù)據(jù)對(duì)象。除了層次上的區(qū)別外,他們都可以看作協(xié)調(diào)者。層次的出現(xiàn),意味著可以在不同的層次理解應(yīng)用邏輯,給任務(wù)劃分提供了合適的界限。對(duì)子層次細(xì)節(jié)的忽略,保證了在系統(tǒng)變化時(shí)不會(huì)涉及過多對(duì)象。當(dāng)然同集中式相比,需要考察更多不同層次的對(duì)象,單個(gè)應(yīng)用邏輯不是非常直觀。
我認(rèn)為DomainModel的控制風(fēng)格,應(yīng)采用“委托式”。Model的各部分如同人體的細(xì)胞和組織,都略帶智能,有明顯的分工,協(xié)作完成任務(wù)。 當(dāng)然,這里面還有很多問題需要仔細(xì)考慮。
安徽新華電腦學(xué)校專業(yè)職業(yè)規(guī)劃師為你提供更多幫助【在線咨詢】