• 设计模式之组合模式


      组合模式,又叫做“部分-整体模式”,它属于结构型设计模式,创建了对象组的树形结构。

      定义:将对象组合成树形结构以表示“部分-整体”的层次关系,使得用户在对单一对象和组合对象的使用具有一致性。

      问题描述:构建一个树形结构的复杂对象,并能区分部分和整体的差异,且用户可以一致性地对它们进行操作。

      解决方案:抽象出容器类和叶子类的共有的行为和方法,并分别去实现。

      结构图

      举个栗子:讲一个总公司、分公司和子公司的故事。。。

      总公司由若干个分公司组成,分公司又由若干个子公司组成,总公司、分公司和子公司所共有的行为由添加属下公司、解除属下公司、批量添加属下公司和批量解除属下公司,将这四种行为抽象出来并分别去操作和实现。具体实现方式如下:

      1. 抽象构件类Company,包含公司类的共有方法。代码如下:

             

      2. 具体容器类HeadOffice(总公司)和BranchOffice(分公司),分别重写父类Company中定义的方法。代码如下:

          

          

      3. 叶子节点类SubOffice,注意它没有子节点,所以它不需要去重写父类中的方法。代码如下:

          

      4. 在类CompositeFragment中分别实例化各个对象的实例,然后进行相应的操作。核心代码如下:

               

      5. 运行后的效果如下:

         

      综上,容器类及其叶子类的使用方法完全一致,并且新增叶子类和容器类也很方便。

      优点

      1. 高层模块调用简单;

      2. 节点自由增加。

      缺点

      1. 不能限制容器下的叶子类型,因为所有的容器和叶子都继承自一个父类或依赖于一个接口;

      2. 容器和叶子的声明都是实现类,而不是接口,违反了依赖倒置原则。

      适用场景

      1. 表示对象的部分-整体的层次结构;

      2. 忽略单个对象和组合对象的不同,希望统一使用它们。

  • 相关阅读:
    realsense d435i qt 测试
    realsense d435i 数据 测试
    realsense d435i测试
    ubuntu torch GPU yolov5
    IfcLayeredItem
    ubuntu大服务器 pytorch环境配置
    condarc内容
    realsense point cloud
    yolov5 环境配置
    pip error
  • 原文地址:https://www.cnblogs.com/chenxkang/p/6756541.html
Copyright © 2020-2023  润新知