• 设计模式-组合模式


            组合模式(Composite Pattern)是一种设计模式,它允许将对象组合成树形结构以表示“部分-整体”的层次结构。组合模式使得客户端可以统一处理单个对象和组合对象,而无需区分它们的差异。

            在Java中,组合模式可以通过以下方式实现:

            1. 创建一个抽象类或接口(Component),定义了组合对象和叶子对象的共同行为。组合对象可以包含其他组合对象或叶子对象。

            2. 创建一个叶子类(Leaf),实现了Component接口,并表示组合中的叶子对象。叶子对象没有子对象。

            3. 创建一个组合类(Composite),实现了Component接口,并表示组合中的组合对象。组合对象可以包含其他组合对象或叶子对象。组合类通常会维护一个子对象的列表。

            以下是一个简单的示例代码,演示了如何使用组合模式:

    1. // 抽象类或接口
    2. abstract class Component {
    3. protected String name;
    4. public Component(String name) {
    5. this.name = name;
    6. }
    7. public abstract void operation();
    8. }
    9. // 叶子类
    10. class Leaf extends Component {
    11. public Leaf(String name) {
    12. super(name);
    13. }
    14. @Override
    15. public void operation() {
    16. System.out.println("Leaf " + name + " operation");
    17. }
    18. }
    19. // 组合类
    20. class Composite extends Component {
    21. private List components = new ArrayList<>();
    22. public Composite(String name) {
    23. super(name);
    24. }
    25. public void addComponent(Component component) {
    26. components.add(component);
    27. }
    28. public void removeComponent(Component component) {
    29. components.remove(component);
    30. }
    31. @Override
    32. public void operation() {
    33. System.out.println("Composite " + name + " operation");
    34. for (Component component : components) {
    35. component.operation();
    36. }
    37. }
    38. }
    39. // 客户端
    40. public class Main {
    41. public static void main(String[] args) {
    42. Component leaf1 = new Leaf("Leaf 1");
    43. Component leaf2 = new Leaf("Leaf 2");
    44. Composite composite1 = new Composite("Composite 1");
    45. composite1.addComponent(leaf1);
    46. composite1.addComponent(leaf2);
    47. Component leaf3 = new Leaf("Leaf 3");
    48. Composite composite2 = new Composite("Composite 2");
    49. composite2.addComponent(leaf3);
    50. composite2.addComponent(composite1);
    51. composite2.operation();
    52. }
    53. }

            在这个示例中,Component是抽象类或接口,定义了组合对象和叶子对象的共同行为。Leaf类是叶子类,实现了Component接口,并表示组合中的叶子对象。Composite类是组合类,实现了Component

  • 相关阅读:
    【flutter上传图片】
    在Python中实现一个简单的社交媒体应用
    (九)admin-boot项目之代码生成器
    C# 面向对象
    解读文献中的箱线图(Box-plot)和小提琴图(Violin-plot))
    SQL必需掌握的100个重要知识点:联结表
    Vue (七) --------- Vue 脚手架
    All data types in Python are “reference type“
    Apache SSI 远程命令执行漏洞复现
    springmvc有哪几种请求参数的方式呢?
  • 原文地址:https://blog.csdn.net/m0_65014849/article/details/133947768