設(shè)計(jì)模式-裝飾模式《十六》

何為裝飾模式

定義:動(dòng)態(tài)的給一個(gè)對(duì)象添加一些額外的職責(zé)。就擴(kuò)展功能來(lái)說(shuō),裝飾模式相比生成子類更為靈活

靜態(tài)關(guān)系圖如下

裝飾模式的類圖

何時(shí)使用裝飾模式

1、想要在不影響其他對(duì)象情況下,以動(dòng)態(tài)、透明的方式給單個(gè)對(duì)象添加職責(zé)。
2、想要擴(kuò)展一個(gè)類的行為,卻做不到。類定義可能被隱藏,無(wú)法進(jìn)行子類化;或者,對(duì)類的每個(gè)行為的擴(kuò)展,為支持每種功能組合,將產(chǎn)生大量的子類
3、對(duì)類的職責(zé)的擴(kuò)展是可選的

注:系統(tǒng)Category是基于裝飾器模式
注意:Category可能重寫(xiě)了被裝飾父類的方法

實(shí)現(xiàn)裝飾模式的各種圖像濾鏡的類圖

Objective-C項(xiàng)目地址

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 設(shè)計(jì)模式匯總 一、基礎(chǔ)知識(shí) 1. 設(shè)計(jì)模式概述 定義:設(shè)計(jì)模式(Design Pattern)是一套被反復(fù)使用、多...
    MinoyJet閱讀 4,093評(píng)論 1 15
  • 設(shè)計(jì)模式基本原則 開(kāi)放-封閉原則(OCP),是說(shuō)軟件實(shí)體(類、模塊、函數(shù)等等)應(yīng)該可以拓展,但是不可修改。開(kāi)-閉原...
    西山薄涼閱讀 4,081評(píng)論 3 14
  • Swift1> Swift和OC的區(qū)別1.1> Swift沒(méi)有地址/指針的概念1.2> 泛型1.3> 類型嚴(yán)謹(jǐn) 對(duì)...
    cosWriter閱讀 11,662評(píng)論 1 32
  • 1 場(chǎng)景問(wèn)題# 1.1 復(fù)雜的獎(jiǎng)金計(jì)算## 考慮這樣一個(gè)實(shí)際應(yīng)用:就是如何實(shí)現(xiàn)靈活的獎(jiǎng)金計(jì)算。 獎(jiǎng)金計(jì)算是相對(duì)復(fù)雜...
    七寸知架構(gòu)閱讀 4,297評(píng)論 4 67
  • javascript設(shè)計(jì)模式與開(kāi)發(fā)實(shí)踐 設(shè)計(jì)模式 每個(gè)設(shè)計(jì)模式我們需要從三點(diǎn)問(wèn)題入手: 定義 作用 用法與實(shí)現(xiàn) 單...
    穿牛仔褲的蚊子閱讀 4,489評(píng)論 0 13

友情鏈接更多精彩內(nèi)容