設(shè)計(jì)模式學(xué)習(xí)總結(jié)之一
設(shè)計(jì)模式其實(shí)只是一種程序設(shè)計(jì)的思想準(zhǔn)則。通過該思想準(zhǔn)則來指導(dǎo)我們的程序開發(fā)行為,盡量讓開發(fā)的程序更加穩(wěn)健、高效、思路清晰、少bug......
開發(fā)一程序項(xiàng)目,往往并不只限于單一地使用某一模式。往往會(huì)多種模式同時(shí)使用。
其實(shí),設(shè)計(jì)模式在具體項(xiàng)目中的應(yīng)用開發(fā)中。要說要用xxx/xxx模式來搭框架開發(fā)等等,這些都是不對的。因?yàn)閭€(gè)人認(rèn)為,設(shè)計(jì)模式的應(yīng)用,是隨著項(xiàng)目的
不同而定的。因?yàn)椴煌捻?xiàng)目有著不同的解決方案。而不同的解決方案,將決定著,需要使用哪xxx/哪xxx模式來處理會(huì)比較好,此時(shí)才能說,確定了項(xiàng)目
的框架等等。
比如說:本來需要開發(fā)一個(gè)本地資源管理的項(xiàng)目。如果你一開始就給它定了一定要用單實(shí)例模式來搭框架實(shí)現(xiàn)。那我們就不明白了這個(gè)實(shí)例,在框架中,
到底它應(yīng)該是什么。反過來,正常的,我們應(yīng)該根據(jù)這個(gè)項(xiàng)目的需要來確定應(yīng)該用到的模式。就拿該例子來說。我們可以對資源方面,使用抽象工棧模式
在資源與展現(xiàn)及其處理方面,我們可以應(yīng)用觀察模式(即:所謂的observer模式)。如此一來,我很明確了,該系統(tǒng)大置的框架。這正應(yīng)了剛開始的一句話
:設(shè)計(jì)模式只是一種程序設(shè)計(jì)的思想準(zhǔn)則,它只是用來指導(dǎo)程序開發(fā)的行為。
當(dāng)然想懂得設(shè)計(jì)模式的東東,確實(shí)還是離不開面向?qū)ο螅ǖ乃枷耄o思想更解的越深刻,學(xué)起設(shè)計(jì)模式的將相對越輕松,也更解的會(huì)更深刻些(當(dāng)然,
學(xué)習(xí)它將是個(gè)不斷迭代的過程的)。反過來,對設(shè)計(jì)模式理解的越深刻,對oo的理解及應(yīng)用與設(shè)計(jì),也將大大有益。
一:Factory模式(工廠模式)
所謂的Factory模式,即:它能類似工廠一樣,不斷地產(chǎn)生(即:創(chuàng)建)“產(chǎn)品”出來。但它所創(chuàng)建出來的那些“產(chǎn)品”,一般是抽象類的產(chǎn)品。舉例:
假如有抽象類AbstractBasicClass。我們要想使用它,必須得有它的實(shí)現(xiàn)類。按正常來說,我們可以直接通過其具體的子類實(shí)例化一個(gè)產(chǎn)品出來。但這樣會(huì)
有個(gè)問題,當(dāng)AbstractBasicClass擁有N種不同的實(shí)現(xiàn)子類時(shí),那我們到底要使用哪種具體子類來實(shí)例化,并且,各個(gè)不同的具體實(shí)現(xiàn)子類的命名,也將是
個(gè)可怕的問題。因此這樣的維護(hù)將變得十分復(fù)雜。而Factory的設(shè)計(jì)就可以起來很好的一個(gè)維護(hù)作用。其實(shí)Factory模式的設(shè)計(jì),還有一個(gè)好處,就是使得實(shí)例
化得到了推遲(到了后期----一般指執(zhí)行期)。
二:AbstractFactory模式(抽象工廠模式)
上面Factory模式,其實(shí)針對的是一類類的情況,即:處理的上上面的AbstractBasicClass這一類類的情況。而實(shí)際項(xiàng)目中,卻往往需要處理N種的這樣抽象類、
的情況。此時(shí),我們將這N種類的產(chǎn)品創(chuàng)建都?xì)w到一個(gè)Factory中時(shí),此時(shí)的Factory即為一個(gè)AbstractFactory了。因此說,F(xiàn)actory與AbstractFactory只不過
是處理的類各類的個(gè)數(shù)差異罷了。其思想是類似的。
但一般來說AbstractFactory所產(chǎn)生出來的種抽象類,其實(shí)它們之間,一般來說,或多或少,會(huì)是有一定的關(guān)系的。比如:一個(gè)Abstractfactory產(chǎn)生出兩個(gè)
抽象類的產(chǎn)品A和B。則A可能就需要B的某些功能,反之類似。
小結(jié):Factory與AbstractFactory的設(shè)計(jì),最終的目的都只是為了使用系統(tǒng)抽象類的維護(hù)更加簡單些。