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