设计模式之创建类模式PK
創(chuàng)建類模式包括:
創(chuàng)建類模式能夠提供對象的創(chuàng)建和管理職責(zé).
其中單例模式和原型模式非常容易理解, 單例模式是要保持在內(nèi)存中只有一個對象,原型模式是要求通過復(fù)制的方式產(chǎn)生一個新的對象,這兩個不容易混淆.
工廠方法模式VS建造者模式
工廠方法模式注重的是整體對象的創(chuàng)建方法,而建造者模式注重的是部件構(gòu)建的過程,旨在通過一步一步的精確構(gòu)造創(chuàng)建出一個復(fù)雜的對象.
工廠方法模式和建造者模式的區(qū)別:
在具體應(yīng)用中如何選擇呢?這取決于我們在做系統(tǒng)設(shè)計(jì)時的意圖, 如果需要詳細(xì)關(guān)注一個產(chǎn)品不見的生產(chǎn)、安裝步驟,則選擇建造者 ,否則選擇工廠方法模式
抽象工廠模式VS建造者模式
抽象工廠模式實(shí)現(xiàn)對產(chǎn)品家族的創(chuàng)建, 一個產(chǎn)品家族是這樣一系列產(chǎn)品: 具有不同分類維度的產(chǎn)品組合,采用抽象工廠模式不需要關(guān)心構(gòu)建過程,只關(guān)心什么產(chǎn)品由什么工廠生產(chǎn)即可. 而建造者模式則是要求按照指定的藍(lán)圖建造產(chǎn)品, 它的主要目的是通過組裝零配件而產(chǎn)生一個新產(chǎn)品,兩者的區(qū)別還是比較明顯的.
抽象工廠模式比建造者模式的尺度要大, 它關(guān)注產(chǎn)品整體,而建造者模式關(guān)注構(gòu)建過程, 因此建造者模式可以很容易的構(gòu)建出一個嶄新的產(chǎn)品, 只要導(dǎo)演類提供具體的制作流程.
如果希望屏蔽對象的創(chuàng)建過程,只提供一個封裝良好的對象,可以選擇抽象工廠模式.而建造者模式可以用在構(gòu)件的裝配方面,如通過裝配不同的組件或者相同組件的不同順序,可以產(chǎn)生一個新的 對象, 它可以產(chǎn)生一個非常靈活的架構(gòu),方便的擴(kuò)展和 維護(hù)系統(tǒng)
工廠方法模式VS抽象工廠模式
工廠方法模式和抽象工廠模式都實(shí)現(xiàn)了對象的創(chuàng)建, 都是不需要關(guān)心其構(gòu)建過程的.
工廠方法模式中我們把生成產(chǎn)品類的時間延遲,就是通過對應(yīng)的工廠類來生成對應(yīng)的產(chǎn)品類,在這里我們就可以實(shí)現(xiàn)“開發(fā)-封閉”原則,無論加多少產(chǎn)品類,我們都不用修改原來類中的代碼,而是通過增加工廠類來實(shí)現(xiàn)。但是這還是有缺點(diǎn)的,如果產(chǎn)品類過多,我們就要生成很多的工廠類。假如我們要實(shí)現(xiàn)的產(chǎn)品接口不止一個,也就是有多個產(chǎn)品接口,不同產(chǎn)品接口有對應(yīng)的產(chǎn)品族。什么是產(chǎn)品族呢?簡單的理解就是,不同牌子產(chǎn)的車?yán)锩鏁信苘囶愋?#xff0c;家庭類型,商用類型等的車,不同牌子的車的跑車類型的車可以組成一個產(chǎn)品族。對于這種情況我們可以采用抽象工廠模式。
抽象工廠模式中我們可以定義實(shí)現(xiàn)不止一個接口,一個工廠也可以生成不止一個產(chǎn)品類,抽象工廠模式較好的實(shí)現(xiàn)了“開放-封閉”原則,是較為抽象,并具一般性的模式。我們在使用中要注意使用抽象工廠模式的條件。
總結(jié)
以上是生活随笔為你收集整理的设计模式之创建类模式PK的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php 去除标签内样式,PHP去除htm
- 下一篇: asp.net ajax控件工具集 Au