首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C# 設計模式實戰:Decorator 裝飾模式完整解析(二)

     編輯:關於C語言

程式碼執行結果

裝飾模式執行結果

代碼角色說明

  • Weapon:Component(抽象構件)
  • Rifle:ConcreteComponent(具體構件)
  • Decorator:Decorator(抽象裝飾),繼承 Component + 持有 Component 實例
  • Enhance / Wear:ConcreteDecorator(具體裝飾),附加強化/磨損職責

半透明裝飾模式

Client 使用具體裝飾類別(而非抽象 Component),因需呼叫額外方法(EnhanceAmmo()、WearByRate())。此為「半透明裝飾」。

採用時機

  • 代碼層面:功能交叉擴展不會導致類別爆炸/繼承層次過深
  • 應用層面:動態賦予/撤銷職責,任意排列組合

裝飾模式 vs 繼承

維度繼承裝飾模式
靈活度靜態、編譯期決定動態、執行期組合
組合數指數級增長(強化+磨損+修理...)線性組合,任意排列
單一職責違反(子類混合多職責)符合(每裝飾類別單一職責)
開閉原則違反(新增功能需修改/新增子類)符合(新增裝飾類別,不修改既有)

適用性檢核

  • 需要在不影響其他物件的情況下,動態給單一物件增加職責
  • 職責可撤銷
  • 無法採用繼承(如類別密封、或會產生大量子類)
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved