模式簡述
- 這個模式最經典的應用就是在Java的I/O流中應用,對於文件流讀寫操作來說,最基本的操作就是讀取、寫入
- 但實際操作時又涉及到很多的種類的操作,比如字節、字符讀取、是否緩存、讀寫文件時提供訪問效率,等等,
- 這些功能都是額外的功能又或者說增強功能,就如同現在的氪金遊戲,氪金就是增加玩家能力,更好的過關
- 通過這個模式我們來完成功能增強,更好的完成原有任務
使用目的
- 主要解決繼承關係過於複雜的問題,通過組合來替代繼承。
- 主要作用是給原始類添加增強功能。
這也是判斷是否該用裝飾器模式的一個重要的依據。
除此之外,裝飾器模式還有一個特點,那就是可以對原始類嵌套使用多個裝飾器。爲了滿足這個應用場景,在設計的時候,裝飾器類需要跟原始類繼承相同的抽象類或者接口
結構圖
使用設計模式的目的是爲了讓代碼結構清晰,組織簡單,避免過度設計
- 代碼Demo:裝飾者模式:JavaI/O;玩家打Boss