設(shè)計模式面面觀(8):創(chuàng)建型模式總結(jié)
系統(tǒng)
1819 0
創(chuàng)建型模式總結(jié)
創(chuàng)建型模式總結(jié)
1.
創(chuàng)建型模式成員
溫故而知新,看完前面
7
章的朋友首先閉上眼睛認(rèn)真的想想一個很簡單的問題:創(chuàng)建型模式到底有幾種模式?
<shapetype id="_x0000_t75" coordsize="21600,21600" o:spt="75" o:preferrelative="t" path="m@4@5l@4@11@9@11@9@5xe" filled="f" stroked="f"><stroke joinstyle="miter"></stroke><formulas><f eqn="if lineDrawn pixelLineWidth 0"></f><f eqn="sum @0 1 0"></f><f eqn="sum 0 0 @1"></f><f eqn="prod @2 1 2"></f><f eqn="prod @3 21600 pixelWidth"></f><f eqn="prod @3 21600 pixelHeight"></f><f eqn="sum @0 0 1"></f><f eqn="prod @6 1 2"></f><f eqn="prod @7 21600 pixelWidth"></f><f eqn="sum @8 21600 0"></f><f eqn="prod @7 21600 pixelHeight"></f><f eqn="sum @10 21600 0"></f></formulas><path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"></path><lock v:ext="edit" aspectratio="t"></lock></shapetype><shape id="_x0000_i1025" style="WIDTH: 141.75pt; HEIGHT: 172.5pt" type="#_x0000_t75"><imagedata src="file:///C:%5CDOCUME~1%5CWensi%5CLOCALS~1%5CTemp%5Cmsohtml1%5C01%5Cclip_image001.jpg" o:title="創(chuàng)建型模式成員"></imagedata></shape>
這里我特意排了下次序,依據(jù)實(shí)現(xiàn)的難易程度由左到右遞增。
2.
創(chuàng)建型模式討論
l
特點(diǎn):創(chuàng)建型模式他主要解決的是對新類創(chuàng)建(
New
)動作的封裝處理,所以我把創(chuàng)建型模式歸結(jié)為對新實(shí)體的創(chuàng)建工作中存在變化的地方進(jìn)行封裝,除
Singleton
模式外其他模式都是解決的
new
帶來的耦合關(guān)系。
l
優(yōu)點(diǎn):
1)
動態(tài)創(chuàng)建新的實(shí)體類,用戶可以根據(jù)不同的需求創(chuàng)建不同的產(chǎn)品類(擅長處理易變類的創(chuàng)建工作)
2)
將類創(chuàng)建工作與業(yè)務(wù)邏輯操作分開,形成獨(dú)立的創(chuàng)建環(huán)境,用戶可以依據(jù)自己的需要創(chuàng)建適合自己的實(shí)體類。
l
缺點(diǎn):
1)
每創(chuàng)建一個實(shí)例類都要額外的去創(chuàng)建一個創(chuàng)建這個實(shí)例類的類(工廠類),
Prototype
模式其實(shí)也是一個工廠,只不過他的工廠就是本身而已,所以
Prototype
嚴(yán)格上來說他是一個特殊的工廠
2)
由于
1
)的問題存在所以我們在創(chuàng)建實(shí)體類是,需要重復(fù)定義他的創(chuàng)建類。這個我們在抽象工廠中提到過這個問題當(dāng)產(chǎn)品系列增加新品種的時候抽象工廠模式必須調(diào)整各個工廠類的實(shí)例方法(體力活)
l
3.
各模式的解決方向匯總表
模式名稱
|
適用環(huán)境
|
主意
|
單件模式(
Singleton
)
|
控制類實(shí)例化個數(shù)(通常為單個)
|
可以通過他的實(shí)現(xiàn)原理解決創(chuàng)建固定類實(shí)例個數(shù)的需求
|
原型模式(
Prototype
)
|
通過克隆解決一些類操作接口固定的易變類實(shí)例,原型模式可以用工廠、抽象工廠、生成器模式相互轉(zhuǎn)換
|
合理利用原型模式可以規(guī)避一些工廠模式創(chuàng)建工廠類的繁瑣工作
|
工廠模式
(Factory)
|
動態(tài)實(shí)例化一個客戶需要的類,不考慮類的其他復(fù)雜變化需求
|
我們在用創(chuàng)建型模式解決問題時通常是從工廠模式開始設(shè)計,當(dāng)遇到復(fù)雜變化時,在考慮重構(gòu)為其他三種工廠模式(
Abstract Factory,Builder,Prototype
)
|
抽象工廠模式
(AbstractFarctory
)
|
擅長與創(chuàng)建相關(guān),相互依賴的系列類,把正在創(chuàng)建類實(shí)例的工作下放到子類工廠去操作
|
抽象工廠是對一系列的類創(chuàng)建工作,提出的一種解決方案
|
生成器模式(
Builder
)
|
創(chuàng)建一個有多個類,按照一定業(yè)務(wù)邏輯組合的復(fù)合型類
|
針對復(fù)雜類創(chuàng)建工作提出的解決方案
|
創(chuàng)建型模式
|
設(shè)計模式面面觀(8):創(chuàng)建型模式總結(jié)
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061
微信掃一掃加我為好友
QQ號聯(lián)系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元