当前位置:   article > 正文

java组合设计模式Composite Pattern

java组合设计模式Composite Pattern

组合设计模式(Composite Pattern)是一种结构型设计模式,它允许你将对象组合成树形结构来表示“部分-整体”的层次结构。组合模式使得客户端对单个对象和组合对象的使用具有一致性。

  1. // Component - 图形接口
  2. interface Graphic {
  3. void draw();
  4. }
  5. // Leaf - 叶子节点:圆形
  6. class Circle implements Graphic {
  7. @Override
  8. public void draw() {
  9. System.out.println("Drawing a Circle");
  10. }
  11. }
  12. // Leaf - 叶子节点:正方形
  13. class Square implements Graphic {
  14. @Override
  15. public void draw() {
  16. System.out.println("Drawing a Square");
  17. }
  18. }
  19. // Composite - 组合节点:图形组合
  20. class CompositeGraphic implements Graphic {
  21. private List<Graphic> childGraphics = new ArrayList<>();
  22. @Override
  23. public void draw() {
  24. for (Graphic graphic : childGraphics) {
  25. graphic.draw();
  26. }
  27. }
  28. // 添加子图形
  29. public void add(Graphic graphic) {
  30. childGraphics.add(graphic);
  31. }
  32. // 移除子图形
  33. public void remove(Graphic graphic) {
  34. childGraphics.remove(graphic);
  35. }
  36. }
  37. // 客户端代码
  38. public class CompositePatternDemo {
  39. public static void main(String[] args) {
  40. // 创建叶子节点
  41. Graphic circle = new Circle();
  42. Graphic square = new Square();
  43. // 创建组合节点
  44. CompositeGraphic composite = new CompositeGraphic();
  45. CompositeGraphic composite2 = new CompositeGraphic();
  46. // 构建组合树结构
  47. composite.add(circle);
  48. composite.add(square);
  49. composite2.add(composite);
  50. composite2.add(new Circle());
  51. // 绘制组合图形
  52. composite2.draw();
  53. }
  54. }

在这个示例中:

  1. Graphic接口是所有图形组件的共同接口,定义了一个draw方法。
  2. CircleSquare类是叶子节点,实现了Graphic接口的draw方法。
  3. CompositeGraphic类是组合节点,包含了一组Graphic对象,并实现了Graphic接口的draw方法。它能够添加和移除子节点。
  4. CompositePatternDemo类是客户端代码,展示了如何创建和使用组合图形结构。

通过这种方式,客户端代码可以一致地处理单个对象和组合对象。无论是单个圆形、正方形,还是由这些图形组合而成的复杂结构,客户端都可以通过相同的接口进行操作。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/菜鸟追梦旅行/article/detail/641225
推荐阅读
相关标签
  

闽ICP备14008679号