Posted on 2015-05-09 11:15
Onway 閱讀(250)
評(píng)論(0) 編輯 收藏 引用 所屬分類(lèi):
設(shè)計(jì)模式
1,抽象工廠
提供一個(gè)創(chuàng)建一系列相關(guān)或互相依賴(lài)對(duì)象的接口,而無(wú)需指定它們具體的類(lèi)。
抽象工廠通常用工廠方法實(shí)現(xiàn),即抽象工廠是工廠方法的集合,每個(gè)工廠方法生產(chǎn)一個(gè)產(chǎn)品對(duì)象。
客戶(hù)只與抽象工廠和抽象產(chǎn)品進(jìn)行交互。
抽象工廠難以支持新產(chǎn)品的加入,這涉及到抽象工廠及其子類(lèi)的改變。
可以通過(guò)傳遞一個(gè)參數(shù)給工廠方法,該方法標(biāo)識(shí)產(chǎn)品的種類(lèi),由其子類(lèi)解析,以支持新產(chǎn)品的加入。
但這要求不同種類(lèi)的產(chǎn)品都有一個(gè)共同的接口。
2,生成器
將一個(gè)復(fù)雜對(duì)象的構(gòu)建與它的表示分離,使得同樣的構(gòu)建過(guò)程可以創(chuàng)建不同的表示。計(jì)模式/321.png)
計(jì)模式/322.png)
3,工廠方法
定義一個(gè)用于創(chuàng)建對(duì)象的接口,讓子類(lèi)決定實(shí)例化哪一個(gè)類(lèi)。
由一個(gè)可以被子類(lèi)重寫(xiě)的方法創(chuàng)建產(chǎn)品類(lèi)。選擇哪個(gè)具體工廠的邏輯判斷交由客戶(hù)端進(jìn)行。
在不創(chuàng)建工廠子類(lèi)的情況下,工廠方法可以使用泛型實(shí)現(xiàn)。
與簡(jiǎn)單工廠相比,最大的區(qū)別在于創(chuàng)建特定產(chǎn)品的邏輯判斷從工廠類(lèi)內(nèi)部轉(zhuǎn)移到客戶(hù)端。
計(jì)模式/33.png)
4,原型
用原型實(shí)例指定創(chuàng)建對(duì)象的種類(lèi),并且通過(guò)拷貝這些原型創(chuàng)建新的對(duì)象。
關(guān)鍵字Clone,注意淺拷貝和深拷貝。
沒(méi)什么感覺(jué)??!
計(jì)模式/34.png)
5,單件
目的是提供一個(gè)全局訪問(wèn)點(diǎn)。
在Instance靜態(tài)方法里面可以進(jìn)行子類(lèi)實(shí)例切換。
計(jì)模式/35.png)
6,簡(jiǎn)單工廠
簡(jiǎn)單工廠模式也叫靜態(tài)工廠方法(Static Factory Method),由一個(gè)工廠對(duì)象決定創(chuàng)建出哪一種產(chǎn)品類(lèi)的實(shí)例。
需要增加產(chǎn)品會(huì)違反開(kāi)放封閉原則,因?yàn)榕袛噙壿媽?xiě)在方法內(nèi)。
計(jì)模式/36.png)