c 設計模式23講之裝飾模式

2021-09-26 05:28:53 字數 1143 閱讀 5931

不改變物件前提下動態增加其職責,實現一種比子類更靈活的擴充套件方式

(1)比繼承更靈活,不會導致類個數極度增加

(2)可以對乙個物件多種裝飾

(3)具體構建類和裝飾類可單獨變化

(1)會產生很多小物件,占用資源

(2)需要區別每個物件的連線關係

(3)對於多次裝飾類增加排錯難度

不改變物件增加職責功能的情況

decorator_pattern為具體元件模組和裝飾模組的公用抽象模組,定義公用方法。

concrete_component為具體元件模組,提供原始物件方法

decorator為裝飾模組抽象類

concrete_decorator為具體裝飾模組類,實現注入原始物件,實現擴充套件職責

(1)注意透明裝飾和半透明裝飾模組區別,半透明裝飾是在客戶端實現擴充套件方法的呼叫,而透明裝飾是裝飾類做完所有事

(2)裝飾模式在於繼承同乙個抽象類,實現抽象類的方法來進行裝飾和實體模組連線

(3)裝飾模組成員變數來組合具體元件模組

c 設計模式23講之工廠模式

工廠模式與簡單工廠的區別在與,簡單工廠是工廠類建立例項物件 工廠模式是對不同產品類增加各自的建立工廠類 定義乙個建立產品物件的介面工廠,用介面工廠的派生類實現對產品派生類的建立 1 產品例項的細節進行封裝,向客戶隱藏了例項化步驟 2 增加新產品只需增加產品類和生成產品例項的工廠類 1 產品類與產品例...

23種設計模式之裝飾模式

職責 動態的為乙個物件增加乙個新的功能 裝飾模式是乙個用於代替繼承的技術,無須通過繼承增加子類就能擴充套件物件的新功能,使用物件的關聯關係代替繼承關係,更加靈活,同時避免型別體系的快速膨脹。component抽象控制項元件 concretecomponent具體構件角色 真實物件 decorator...

23種設計模式之裝飾模式

定義 動態的給乙個物件新增一些額外的職責.就增加功能來說,裝飾模式相比生成子類更為靈活.通俗的說,就是對乙個類或方法進行包裝 裝飾模式的通用類圖 類圖中的四個角色說明如下 component 抽象構件 component是乙個介面或抽象類,就是定義我們最核心的角色,也就是最原始的物件.在裝飾模式中,...