设计模式学习之组合模式(Composite)

作用:使组件既可以是单个对象,也可以是对象的组合。比如:算术表达式包括操作数、操作符和另一个操作数。操作数可以是数字,也可以是另一个表达式。这样,2+3和(2+3)+(4*6)都是合法的表达式;再比如:常用的树控件,其对象可以是一个节点,也可以是一个叶子。对一棵树来说,对其添加节点还是添加叶子是一样的。

实现要点:ArrayList , 众所周知.net提供的ArrayList极大地方便了你组合对象或者移除对象。

代码:这里只给出类结构,至于怎么用?想象一下你平时是怎么生成树的吧,对每一个节点,你都可以任意增加叶子或者节点,因为我给你

提供的接口是一样的。(唯一注意的是你不能在叶子下再加节点或者叶子了,我也给你提供了异常处理)

 

abstract class Tree
{
public abstract void Add(Tree newObj);
public abstract void Remove(Tree newObj);
}
class Node : Tree
{
ArrayList arr
= new ArrayList();
public override void Add(Tree newObj)
{
arr.Add(newObj);
}
public override void Remove(Tree newObj)
{
arr.Remove(newObj);
}

}
class LEAF : Tree
{
public override void Add(Tree newObj)
{
throw new NotImplementedException();
}
public override void Remove(Tree newObj)
{
throw new NotImplementedException();
}
}

 

 

 


posted @ 2008-11-25 10:51  MichaelChen  阅读(287)  评论(0编辑  收藏  举报