1 说明
在《设计模式-结构型设计模式》一文中,我提到了组合模式。本文给出了一个新的组合模式的小例子。
2 一个新例子
闲话少说,直接上代码。(Talk is cheap. Show me the code.)
代码清单
- Shape.java --interface
- CompositeShape.java
- CompositeTest.java
1 Shape.java
public interface Shape {
void draw();
}
2 CompositeShape.java
public class CompositeShape implements Shape {
private Vector itsShapes = new Vector();
public void add(Shape s) {
itsShapes.add(s);
}
@Override
public void draw() {
for (int i = 0; i < itsShapes.size(); i++) {
Shape shape = (Shape) itsShapes.elementAt(i);
shape.draw();
}
}
}
3 CompositeTest.java
public class CompositeTest {
public static void main(String[] args) {
CompositeShape compositeShape = new CompositeShape();
compositeShape.add(new Circle());
compositeShape.add(new Square());
compositeShape.add(new Circle());
compositeShape.add(new Circle());
compositeShape.draw();
}
}
结果:
诶,这个例子好像比《设计模式-结构性设计模式》一文中的例子还简单~,
就这样吧,这篇文章水水过,周天愉快!
如果找不到Circle和Square的类来我这篇文章中找《再话设计模式-工厂模式-使用类名实例化对象》
3 结论
COMPOSITE模式是一个非常简单但具有深刻内涵的模式。