组合模式:以“整体-部分”的层次结构,将对象以树型结构组合起来。
如下图所示:
组合模式首先得定义一个用来管理和访问部件们的抽象类。
public abstract class Equipment
{
//价格
public abstract double netPrice();
//增加部件方法
public abstract bool add(Equipment equipment);
//删除部件方法
Public abstract bool remove(Equipment equipment);
//注意这里,这里就提供一种用于访问组合体类的部件方法。
public abstract Equipment getEquip() ;
}
再创建一个组合体的部件
class element:Equipment
{
public override double netPrice()
{
返回些部件价格
}
}
现在我们再来定义一个组合体,也就是组合各个部件的类。
class CompositeEquipment : Equipment
{
//定义一个Vector 用来存放'儿子'
private List<Equipment> equipment=new List();
public override double netPrice()
{
把子部件的价格加起来
}
重载add()、remove()和getEquip()函数。
}
以下是如何使用这个组合模式
CompositeEquipment composite=new CompositeEquipment();
composite.add(new element());
composite.add(new element());
composite.netPrice();计算出总价格
当然这是个组合模式的例子,实际上上面的这个例子是没有啥意义的,但是它却是一个简单易懂的组合模式的模型。