当应该以与同一类型的一个对象相同的方式处理对象集合时,可以使用复合模式.这通常与树结构数据一起使用.以下是此模式适合的示例:
public abstract class Shape {
public abstract void Draw();
}
public class Line : Shape {
public override void Draw() {
// Draw line
}
}
public class Polygon : Shape {
private IList<Line> lines;
public override void Draw() {
foreach (Shape line in lines) {
line.Draw();
}
}
}
Run Code Online (Sandbox Code Playgroud)
如您所见,该模式使得处理绘图形状的代码可能不知道绘制了多少行.