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