GoF23種設計模式中創(chuàng)建型模式有5種,分別是:Singleton單件模式、Abstract Factory抽象工廠模式、Builder生成器模式、Factory Method工廠方法模式、Prototype原形模式。下面分別總結(jié)這幾種設計模式。
在學習的過程中,覺得從功能上看Abstract Factory模式和Builder模式容易混淆,Factory Method模式和Prototype模式不好區(qū)分。Singleton模式?jīng)]什么太大的困難。下面就來分析一下前四種模式。 一、Abstract Factory模式和Builder模式: Abstract Factory是應對一系列對象的創(chuàng)建的問題,正如前面文章中舉的例子,對于創(chuàng)建一個汽車對象來說,Abstract Factory模式更關注一系列的對象的創(chuàng)建,或者說是汽車類型中的各個部分,如:Wheel、Engine、Body等等類型的創(chuàng)建。換句話說關注點在這一系列對象上。 Builder是應對一個復雜對象創(chuàng)建的問題,或者說是針對這個復雜對象中的子對象的創(chuàng)建的問題。以汽車的例子來說,我覺得比起Abstract Factory模式,Builder模式相對注重汽車類型(上面所說的“復雜對象”)本身以及其各個部分(Wheel、Engine、Body等等)類型的創(chuàng)建。Builder模式要求這個復雜的類型(汽車)中的各個子類型的結(jié)合部分相對穩(wěn)定,用例子說明就是對于汽車來說,無論用什么配件組裝,個個配件的組裝方式都一樣,有相對穩(wěn)定的接口。對于這輛車你用什么牌子的Wheel、什么牌子的Engine可能變化會很大很頻繁。 二、Factory Method模式和Prototype模式: 開始我覺得這兩種模式從功能上講是一樣的(個人觀點),都是封裝了對對象的創(chuàng)建,只不過Prototype模式是用原型克隆進行拷貝來完成對象的創(chuàng)建,在這之中還應注意淺拷貝和深拷貝的區(qū)別。在向同事請教后有點明白。這兩種模式在應用場景上還是一定的區(qū)別的。 Factory Method模式是重新創(chuàng)建一個對象 Prototype模式是利用現(xiàn)有的對象進行克隆,當兩個對象或多個對象雷同的時候,可以考慮用一個已創(chuàng)建的對象去克隆出其余的對象。 |
|