设计模式分析
聚合,層次設計模式:適用于層次關系
例子:
public?class?Fee
{
????private?float?valuee?=?0;
????
????public?string?GetName()
????{
????????//返回費用的名稱
????}
????
????public?bool?HasChildren()
????{
????????//該費用類型是否有子類型
????}
????
????public?Fee[]?GetChildren()
????{
????????//返回該費用類型的子類型
????}
????
????public?float?GetValue()
????{
????????//返回費用的金額
????????if?(HasChildren())
????????{
????????????float?f?=?0;
????????????Fee[]?children?=?GetChildren();
????????????for?(int?i?=?0;?i?<?children.Length;?i?++)
????????????{
????????????????f?+=?children[i].GetValue();
????????????}
????????????return?f;
????????}
????????else
????????{
????????????return?valuee;
????????}
????}
}
例子:
public?class?Fee
{
????private?float?valuee?=?0;
????
????public?string?GetName()
????{
????????//返回費用的名稱
????}
????
????public?bool?HasChildren()
????{
????????//該費用類型是否有子類型
????}
????
????public?Fee[]?GetChildren()
????{
????????//返回該費用類型的子類型
????}
????
????public?float?GetValue()
????{
????????//返回費用的金額
????????if?(HasChildren())
????????{
????????????float?f?=?0;
????????????Fee[]?children?=?GetChildren();
????????????for?(int?i?=?0;?i?<?children.Length;?i?++)
????????????{
????????????????f?+=?children[i].GetValue();
????????????}
????????????return?f;
????????}
????????else
????????{
????????????return?valuee;
????????}
????}
}
組合模式可以很精確的反映銷售網點間的聚合關系,并且對查詢和統計提供了非常一致的接口,調用者不必區分具體的網點類型。類似這樣的情況,當我們發現需求中一些對象具有聚合關系,并且我們希望對他們做一些共同的事情,就可以采用組合模式。
轉載于:https://www.cnblogs.com/yanglin/archive/2007/10/24/935625.html
總結
- 上一篇: linux-03-Vim使用+账号用户管
- 下一篇: 2.4 1死锁的概念(1)