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

C# 設計模式實戰:Composite 組合模式完整解析(二)

     編輯:關於C語言

程式碼執行結果

組合模式執行結果

代碼角色說明

  • Element:Component(抽象構件),定義統一介面:Add/Remove/Display/Start/Stop
  • GameService:Leaf(葉節點),無子節點,Add/Remove 拋出例外
  • GameServer:Composite(樹枝節點),管理服務清單,啟動/停止有順序邏輯
  • GameArea:Composite(最上層樹枝),管理伺服器清單

透明 vs 安全模式

本範例採用透明模式,依需求選擇。

GameServer 啟動/停止邏輯亮點

  • 啟動:依 ServiceType 排序(大→小),先開 Log/Rank → DataExchange → Gate → Lobby
  • 停止:反序關閉
  • 樹枝節點封裝複雜管理邏輯,Client 單純呼叫 Start()

Client 使用簡潔性


Element server1 = new GameServer("GS1", "192.168.0.1");
server1.Add(new GameService("Lobby1", 1, "S5Lobby1"));
// ... 加入其他服務

Element area = new GameArea("電信區");
area.Add(server1);
area.Add(server2);

area.Display(); // 遞迴顯示整棵樹
area.Start();   // 一鍵啟動整個大區
area.Stop();    // 一鍵關閉

模式優勢體現

若無 Composite,Client 需手動遍歷伺服器→服務,並處理啟動順序邏輯。模式將「部分-整體」階層操作封裝在樹枝節點,Client 僅對根節點操作。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
模式做法優點缺點
透明模式Component 宣告 Add/RemoveClient 統一對待葉/樹枝葉節點執行期拋例外,不安全
安全模式Component 不宣告,僅 Composite 實作型別安全,編譯期檢查Client 需區分葉/樹枝,失去透明性