設(shè)計(jì)模式分類(lèi)
模板方法模式
核心就是設(shè)計(jì)一個(gè)部分抽象類(lèi)。
這個(gè)類(lèi)具有少量具體的方法,和大量抽象的方法,具體的方法是為外界提供服務(wù)的點(diǎn),具體方法中定義了抽象方法的執(zhí)行序列
裝飾器模式
現(xiàn)在有一個(gè)對(duì)象A,希望A的a方法被修飾
實(shí)現(xiàn)思路:
- 將A抽象成抽象類(lèi)O
- 裝飾器類(lèi)D來(lái)繼承O,并聚合O
- 裝飾器類(lèi)D的構(gòu)造函數(shù)傳參O,并賦值給所聚合的O
- 裝飾器類(lèi)D可以不用實(shí)現(xiàn)a方法,保持抽象
- 具體裝飾類(lèi)D1繼承裝飾器類(lèi)D,新增修飾方法d1,然后再重寫(xiě)a方法,重寫(xiě)內(nèi)部使用修飾方法d1并調(diào)用super.a
- 具體裝飾類(lèi)D2繼承裝飾器類(lèi)D,新增修飾方法d2,然后再重寫(xiě)a方法,重寫(xiě)內(nèi)部使用修飾方法d2并調(diào)用super.a
- ……
- 使用時(shí),新建原始對(duì)象A,把A傳入D1構(gòu)造器并再次用A接收,再把A傳入D2構(gòu)造器并再次用A接收,……于是實(shí)現(xiàn)了多重裝飾(每一層裝飾都對(duì)上層屏蔽了下層細(xì)節(jié))
適配器模式
實(shí)現(xiàn)適配器之前:
實(shí)現(xiàn)適配器之后:
繼承方式實(shí)現(xiàn):
委托方式實(shí)現(xiàn):
代理模式
代理模式和裝飾器模式在作用上類(lèi)似,不過(guò)代理模式側(cè)重于緩解原對(duì)象的某些繁重的工作,而裝飾器模式側(cè)重于對(duì)原對(duì)象的某些行為進(jìn)行修飾和控制
簡(jiǎn)單工廠、工廠方法、抽象工廠、建造者模式的對(duì)比
始終保持面向“產(chǎn)品”思考
當(dāng)僅需要?jiǎng)?chuàng)造一類(lèi)產(chǎn)品,且產(chǎn)品內(nèi)部類(lèi)別不多時(shí),使用簡(jiǎn)單工廠模式:
當(dāng)僅需要?jiǎng)?chuàng)造一類(lèi)產(chǎn)品,但產(chǎn)品內(nèi)部類(lèi)別紛繁且多變時(shí),使用工廠方法模式:
當(dāng)需要?jiǎng)?chuàng)造多類(lèi)產(chǎn)品,且產(chǎn)品內(nèi)部類(lèi)別紛繁且多變時(shí),使用抽象工廠模式:(抽象工廠模式可以用來(lái)制造復(fù)雜的產(chǎn)品,“將關(guān)聯(lián)零件組裝成產(chǎn)品”)
在抽象工廠模式下,一個(gè)最終產(chǎn)品往往是由多個(gè)部分組成的,如上圖中最終產(chǎn)品就是由產(chǎn)品A和產(chǎn)品B共同組成的,這就導(dǎo)致一個(gè)問(wèn)題:可能由于客戶(hù)端代碼的編寫(xiě)疏忽而導(dǎo)致漏掉某一個(gè)部分。于是有了建造者模式:
建造者模式中新增了Director類(lèi),它就相當(dāng)于一個(gè)“保險(xiǎn)類(lèi)”,在Director內(nèi)部提前編寫(xiě)好沒(méi)有遺漏任何一個(gè)部分的組裝流程,然后暴露一個(gè)簡(jiǎn)單的SAP——construct方法直接由客戶(hù)端調(diào)用,這樣客戶(hù)端就從如履薄冰的復(fù)雜構(gòu)造過(guò)程中解放了出來(lái),降低了出錯(cuò)的概率
組合模式
一句話精髓——容器與內(nèi)容的一致性
最好的例子——文件和文件夾的例子
組合模式最特別的地方就是Composite類(lèi)含有一個(gè)對(duì)抽象的Component的聚合
Flyweight模式,享元模式
Facade模式,外觀模式
一句話總結(jié)——接口(API)變少了文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-825624.html
Visitor模式,觀察者模式
《圖解設(shè)計(jì)模式》這本書(shū)太好了,一段話就能把一個(gè)設(shè)計(jì)模式的關(guān)鍵講清楚:文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-825624.html
到了這里,關(guān)于【設(shè)計(jì)模式】23中設(shè)計(jì)模式筆記的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!