赞
踩
组合设计模式(Composite Pattern)是一种结构型设计模式,它允许你将对象组合成树形结构来表示“部分-整体”的层次结构。组合模式使得客户端对单个对象和组合对象的使用具有一致性。
- // Component - 图形接口
- interface Graphic {
- void draw();
- }
-
- // Leaf - 叶子节点:圆形
- class Circle implements Graphic {
- @Override
- public void draw() {
- System.out.println("Drawing a Circle");
- }
- }
-
- // Leaf - 叶子节点:正方形
- class Square implements Graphic {
- @Override
- public void draw() {
- System.out.println("Drawing a Square");
- }
- }
-
- // Composite - 组合节点:图形组合
- class CompositeGraphic implements Graphic {
- private List<Graphic> childGraphics = new ArrayList<>();
-
- @Override
- public void draw() {
- for (Graphic graphic : childGraphics) {
- graphic.draw();
- }
- }
-
- // 添加子图形
- public void add(Graphic graphic) {
- childGraphics.add(graphic);
- }
-
- // 移除子图形
- public void remove(Graphic graphic) {
- childGraphics.remove(graphic);
- }
- }
-
- // 客户端代码
- public class CompositePatternDemo {
- public static void main(String[] args) {
- // 创建叶子节点
- Graphic circle = new Circle();
- Graphic square = new Square();
-
- // 创建组合节点
- CompositeGraphic composite = new CompositeGraphic();
- CompositeGraphic composite2 = new CompositeGraphic();
-
- // 构建组合树结构
- composite.add(circle);
- composite.add(square);
- composite2.add(composite);
- composite2.add(new Circle());
-
- // 绘制组合图形
- composite2.draw();
- }
- }

在这个示例中:
Graphic
接口是所有图形组件的共同接口,定义了一个draw
方法。Circle
和Square
类是叶子节点,实现了Graphic
接口的draw
方法。CompositeGraphic
类是组合节点,包含了一组Graphic
对象,并实现了Graphic
接口的draw
方法。它能够添加和移除子节点。CompositePatternDemo
类是客户端代码,展示了如何创建和使用组合图形结构。通过这种方式,客户端代码可以一致地处理单个对象和组合对象。无论是单个圆形、正方形,还是由这些图形组合而成的复杂结构,客户端都可以通过相同的接口进行操作。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。