Composite 模式是一个非常简单但具有深刻内涵的模式。它使一组对象表现得像单一一个对象。
还是Shape 的例子。
public interface Shape
{
void draw();
}
public class CompositeShape implements Shape
{
private List<Shape> shapes = new LinkedList<Shape>():
public void addShape(Shape s)
{
shapes.add(s);
}
public void draw()
{
for(Shape shape: shapes)
{
shape.draw();
}
}
}
对于CompositeShape 对象来说,它表现的与普通Shape 对象一样。实际上,它不过是一组Shape 实例的代理。
鉴于此,Composite 模式可以用来消除一对多的关联关系,把多的那一边的对象用Composite 模式处理一下,那么很有可能一对多的关系就变成一对一的了。
Composite 模式使用前提:使用在以一致的方式去处理一组对象。