栀子花开

追求完美

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
聚合,层次设计模式:适用于层次关系
例子:
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;
        }
    }
}

组合模式可以很精确的反映销售网点间的聚合关系,并且对查询和统计提供了非常一致的接口,调用者不必区分具体的网点类型。类似这样的情况,当我们发现需求中一些对象具有聚合关系,并且我们希望对他们做一些共同的事情,就可以采用组合模式。


posted on 2007-10-24 10:13  杨林  阅读(160)  评论(0编辑  收藏  举报