设计模式之组合模式
结构
说明
Compose objects into tree structures to represent part-whole hierarchies. Composite lets clients treat individual objects and compositions of objects uniformly.
把多个对象组成树状结构来表示局部与整体,这样用户可以一样的对待单个对象和对象的组合。
适用条件
- 四则运算、逻辑运算以及 SQL 语句等都可以用组合模式表示;
- 命令: 一个命令经常可以有若干个子命令表示;
- 事务: 最典型的事务时测试用例。
实现
代码语言:javascript复制interface IGraphic {
void Print();
}
class CompositeGraphic : IGraphic {
private readonly IList<IGraphic> _childGraphics = new List<IGraphic>();
public void Print() {
foreach (var childGraphic in _childGraphics) {
childGraphic.Print();
}
}
public void Add(IGraphic graphic) {
this._childGraphics.Add(graphic);
}
public void Remove(IGraphic graphic) {
this._childGraphics.Remove(graphic);
}
}
class Ellipse : IGraphic {
public void Print() {
Console.WriteLine("Ellipse");
}
}
class Program {
static void Main(string[] args) {
var ellipse1 = new Ellipse();
var ellipse2 = new Ellipse();
var ellipse3 = new Ellipse();
var ellipse4 = new Ellipse();
var graphic = new CompositeGraphic();
var graphic1 = new CompositeGraphic();
var graphic2 = new CompositeGraphic();
graphic1.Add(ellipse1);
graphic1.Add(ellipse2);
graphic1.Add(ellipse3);
graphic2.Add(ellipse4);
graphic.Add(graphic1);
graphic.Add(graphic2);
graphic.Print();
Console.ReadKey();
}
}