裝飾器設計模式(Decorator Pattern)詳解
裝飾器模式是一種結構型設計模式,它允許動態地向對象添加額外行為,而無需修改其原始類。這種模式通過包裝對象的方式提供靈活的擴展功能替代繼承。
1. 核心概念
(1)模式定義
裝飾器模式:動態地給一個對象添加一些額外的職責,就增加功能來說,裝飾器模式比生成子類更為靈活。
(2)適用場景
- 需要動態擴展對象功能,但不想修改原有代碼
- 需要組合多種功能,避免使用多層繼承
- 系統需要在運行時選擇不同行為
注意:
- 在裝飾器設計模式中有兩個重要的角色:裝飾者,被裝飾者
- 裝飾器設計模式當中要求:裝飾者 與 被裝飾者 應實現同一個接口/同一些接口,繼承同一個抽象類
- 為什么裝飾者 與 被裝飾者 要實現同一個接口?
因為實現了同一個接口后,對于客戶端程序來說,使用 裝飾者 ()的時候就像在使用 被裝飾者 一樣 - 裝飾者 含有被裝飾者 的引用(A has a B.盡量使用has a,這樣的耦合度低,不要使用is a)