?? 歡迎大家多討論下設(shè)計(jì)模式.txt
字號(hào):
歡迎大家多討論下設(shè)計(jì)模式
http://www.shecn.com/best/g17/g1018.htm
歡迎大家多討論下設(shè)計(jì)模式
--------------------------------------------------------------------------------
我是最近才接觸設(shè)計(jì)模式的,其實(shí)設(shè)計(jì)模式是個(gè)雙刃劍,用好了確實(shí)能解決很多棘手的問題,最主要顯得很高竿,用不好則可能走火入魔。
最近老板就給了我一個(gè)可怕的任務(wù),就是將我以前設(shè)計(jì)中用過的設(shè)計(jì)模式找出來。天知道我都用了什么模式,設(shè)計(jì)的時(shí)候根本沒有考慮設(shè)計(jì)模式。沒辦法,只好將設(shè)計(jì)重新檢查一遍。現(xiàn)在就有一個(gè)很典型的問題,就是:
將一個(gè)ValueObject傳到一個(gè)類中進(jìn)行處理,這個(gè)valueObject由兩個(gè)類組成:ClassMain(主信息),ClassDetails(包含的項(xiàng)目信息)。我原來的設(shè)計(jì)是將不同的處理分成很多類如:checkA,checkB,saveC,saveD,每個(gè)類負(fù)責(zé)進(jìn)行一種處理,但每個(gè)類只用到ValueObject中的某些數(shù)據(jù)和返回一些數(shù)據(jù),我是不是應(yīng)該將ValueObject再針對每個(gè)處理類分成各個(gè)具體的數(shù)據(jù)類如AValue,BValue等等,還是將整個(gè)ValueObject傳進(jìn)去。我的這種設(shè)計(jì)是否合理,是不是有其他更好的方法。
還有,對于這種情況是不是有一種或多種設(shè)計(jì)模式來解決。
肯盼各位指正,謝謝!
01/10/17 18:16 酷帖! 臭帖! 回復(fù)
酷帖評(píng)價(jià): 臭帖評(píng)價(jià):
返回頁首
lianghaiying1 回復(fù): 歡迎大家多討論下設(shè)計(jì)模式
--------------------------------------------------------------------------------
好像很適合使visitor
01/10/18 13:01 酷帖! 臭帖! 回復(fù)
酷帖評(píng)價(jià): 臭帖評(píng)價(jià):
返回頁首
lianghaiying1 回復(fù): 歡迎大家多討論下設(shè)計(jì)模式
--------------------------------------------------------------------------------
好像很適合使visitor
01/10/18 13:02 酷帖! 臭帖! 回復(fù)
酷帖評(píng)價(jià): 臭帖評(píng)價(jià):
返回頁首
xmlone 回復(fù): 歡迎大家多討論下設(shè)計(jì)模式
--------------------------------------------------------------------------------
能具體點(diǎn)么?
01/10/18 13:31 酷帖! 臭帖! 回復(fù)
酷帖評(píng)價(jià): 臭帖評(píng)價(jià):
返回頁首
lianghaiying1 回復(fù): 歡迎大家多討論下設(shè)計(jì)模式
--------------------------------------------------------------------------------
為checkA,checkB,saveC,saveD,定義一個(gè)父類abcd
定義虛擬方法x(),y()..
為ValueObject定義一個(gè)方法,y(abcd* abcdabcd)
{abcdabcd.x();}
01/10/19 12:46 酷帖! 臭帖! 回復(fù)
酷帖評(píng)價(jià): 臭帖評(píng)價(jià):
返回頁首
nevernew 如何確定要看其他限制條件。
--------------------------------------------------------------------------------
當(dāng)然,要把限制條件說成需求也沒有問題。
我們先看你現(xiàn)在的Pattern,這個(gè)Pattern有什么問題?那個(gè)類的變化會(huì)波及整個(gè)系統(tǒng)?如果沒有一個(gè)類會(huì)變化、需要變化,并且變化不會(huì)波及整個(gè)系統(tǒng),這個(gè)類可能就是不需要的。
要知道,我們不是為了用GOF PATTERN而用的(因?yàn)镻ATTERN有很多,GOF PATTERN有23個(gè),不是說除了這23個(gè),其他的都不是,只是不夠好,或者不夠普遍),更不是為了顯示自己了不起,自己是不是真的高竿,我想還是要看結(jié)果。看你的軟件夠不夠好,架構(gòu)夠不夠好,重用性夠不夠好,可維護(hù)性夠不夠好。實(shí)踐是檢驗(yàn)水平高低的唯一標(biāo)準(zhǔn)。
批判了不正之風(fēng)之后,咱們再回頭看看這個(gè)問題。
用Visitor可以。不過我試著加上限制條件之后發(fā)現(xiàn),如果處理結(jié)果是一個(gè)類,是不是可以考慮Builder?如果操作入口可以歸并為一個(gè)(并且不會(huì)產(chǎn)生波及系統(tǒng)的變化),可以考慮Facade。template method用不到嗎?估計(jì)想不用到都不可以吧!:)
01/10/19 17:31 酷帖! 臭帖! 回復(fù)
酷帖評(píng)價(jià): 臭帖評(píng)價(jià):
返回頁首
lianghaiying1 回復(fù): 如何確定要看其他限制條件。
--------------------------------------------------------------------------------
說的有道理,不過Builder和Facade似乎不太合適,
如果是生成簡單的對象就不用Builder,如果對象數(shù)
太少也用不上Facade。估計(jì)template method他得使。
不過是什么主要還看實(shí)際情況,咱不太了解只能是
參考意見。
01/10/22 10:21 酷帖! 臭帖! 回復(fù)
酷帖評(píng)價(jià): 臭帖評(píng)價(jià):
返回頁首
kybin 你還是把這幾個(gè)類的關(guān)系畫成類圖吧,這樣更能看清楚。我們也能更清楚地了解你的問題。
--------------------------------------------------------------------------------
01/10/22 12:34 酷帖! 臭帖! 回復(fù)
酷帖評(píng)價(jià): 臭帖評(píng)價(jià):
返回頁首
xmlone 確實(shí)要用到template method
--------------------------------------------------------------------------------
誠如nevernew所說,確實(shí)要用到template method,因?yàn)橛泻芏嗟倪^程處理都是一樣的。
至于builder、visitor或facade我都覺得不太合適,也可能是我的理解有限。
后來我想了想,其實(shí)我的問題可以簡化為:
結(jié)果可以統(tǒng)一,輸入對象基本上可以統(tǒng)一成兩個(gè)結(jié)構(gòu)。這樣的話是不是總的層次可以采用template method,而對于這兩種不同的輸入對象采用一種pattern呢?具體采用什么pattern不清楚。
再次謝謝lianghaiying1和nevernew的建議,希望遇到類似問題的朋友也能從中得到一些啟發(fā)。
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -