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

C# 設計模式無廢話系列二十:中介者模式(三)—— 執行結果與模式比較

     編輯:關於C語言

代碼執行結果

代碼結構說明

  • AccountSystem(中介者):統籌同事類互動,內部維護同事物件列表。註冊、儲值、消費方法會遍歷相關同事呼叫其專屬方法,全部完成後才更新自身帳戶。
  • GameSystem(抽象同事):儲值/消費各有兩組方法——對外方法僅轉發請求給中介者;xxxSelf 方法執行實質操作。
  • GameArea1/2(具體同事):透過父類建構子關聯中介者。
  • 核心特徵:同事主動感知中介者並與之關聯,實際操作僅與中介者通訊,不再直接關聯其他同事。

何時採用

當一組介面相對穩定的對象間依賴關係錯綜複雜、難以維護或可能變動時,可引入中介者模式。(若 GameArea1/2 充值方法定義不一,AccountSystem 將難以統籌。)

實現要點

  • C# 中可用 delegate 解耦中介者與同事互動行為。
  • 中介者 vs 觀察者:前者適用多對多雜亂互動的統籌;後者適用一(多)對多關係的靈活定製。本例後半階段可套用觀察者模式。前節範例若有多主體多觀察者多對多通訊,也可用中介者統籌。
  • 中介者 vs 外觀:前者同事需透過中介者雙向通訊,用於子系統間;後者子系統傾向單向通訊,用於子系統與上層系統。本例兼具兩者影子。
  • 架構層面常與觀察者、外觀模式搭配,或退化為其形態。實際應用中得益即可,名稱不重要。

注意事項

  • 非所有系統皆需中介者將多對多轉為多對一對多。若同事間關聯清晰無交錯、或不複雜,無需強行套用。
  • 實際應用中中介者邏輯可能龐大,隨需求變更難以維護時,可考慮對中介者角色或處理行為套用其他設計模式。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved