设计模式学习之组合模式(Composite)
2008-11-25 10:51
471 查看
作用:使组件既可以是单个对象,也可以是对象的组合。比如:算术表达式包括操作数、操作符和另一个操作数。操作数可以是数字,也可以是另一个表达式。这样,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();
}
}
实现要点: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();
}
}
相关文章推荐
- 设计模式学习—组合实体模式(Composite Entity Design Pattern)
- 步步为营 .NET 设计模式学习笔记 十五、Composite(组合模式)
- 设计模式学习(结构型模式)—组合模式(Composite)
- 设计模式学习笔记---组合模式composite(Java版)
- 设计模式学习-Composite(组合模式)
- 步步为营 .NET 设计模式学习笔记 十五、Composite(组合模式)
- 【设计模式学习笔记九】【结构型模式】【组合模式(Composite)】
- 设计模式学习笔记——组合(Composite)模式
- 设计模式学习之组合模式(Composite,结构型模式)(10)
- 设计模式学习-Composite(组合模式)
- C#面向对象设计模式学习笔记(8) - Composite 组合模式(结构型模式)
- 设计模式学习笔记Composite组合模式
- java 设计模式学习笔记八 composite组合模式
- java 设计模式学习笔记八 composite组合模式
- 面向对象设计模式之Composite组合模式学习笔记
- 【设计模式】学习笔记13:组合模式(Composite)
- 步步为营 .NET 设计模式学习笔记 十五、Composite(组合模式)
- 【设计模式】学习笔记13:组合模式(Composite)
- 设计模式学习系列六:组合模式(composite)
- 设计模式:组合模式(Composite)