設計模式是 OO 設計經驗的結晶,幫助發現對象、設計關系。本文通過組合模式在費用體系與銷售網絡中的兩個實例展示其威力。
Fee 類既是葉子也是容器:
GetValue() 返回自身金額Fee,GetValue() 遞歸求和fee.GetValue(),無需判斷類型完美體現賬單費用的層次包含關係。
公司→市場部→直銷店/代理商→營業員,類型不同但統計邏輯相同(匯總下屬+自身)。
定義統一接口 ISalesNode:
GetOrders()、GetRevenue()、GetNewCustomers()root.GetRevenue() 獲取全網匯總