设计模式-之合成模式(三)

作者: 3d0829501918 | 来源:发表于2019-02-21 08:42 被阅读10次

    什么是合成模式?
       合成(Composite)模式也称组合模式,合成模式是一组对象的组合,这些对象可以是容器对象,表现为组的概念。另外一些对象代表了单对象,或称叶子对象。

    • 合成模式的意图
       保证客户端调用单对象与组合对象的一致性。
    • 合成模式的适用场景
       如树形菜单、文件及文件夹管理。
    • 合成模式的优点和缺点
      \color{rgb(255, 20, 147)}{优点:}高层模块调用简单, 节点自由增加。
      \color{rgb(255, 20, 147)}{缺点:}在使用组合模式时,其叶子和树枝的声明都是实现类,而不是接口,违反了依赖倒置原则。
      合成模式类图
    • 合成模式特点
       1)组对象允许包含单对象,也可以再包含其他的组对象(常见的错误是将组对象设计为只允许包含叶子对象)。
       2)组合对象和单对象定义共同的行为。
      结合这两点。就可以为组对象与单对象定义统一类型,并将该组对象建模为包含同等类型的集合。
                             \color{rgb(255, 69, 0)}{举个栗子}
      下面以公司的组织形式为例。
        阿里巴巴集团下面很多子公司,阿里妈妈、淘宝、天猫、阿里云等等,每个公司都有自己的部门和主要提供的服务,比如阿里巴巴主要提供B2B,淘宝主要是C2C,天猫主要是C2C,阿里云就是云计算服务了。每个公司都是独立的子公司,所以也就有着自己的研发部门、人力资源部门、市场部门等。
    公司抽象类 公司实现类 部门类 测试类 运行结果

    小农总结:
      组合模式解耦了客户程序与复杂元素内部结构,从而使客户程序可以向处理简单元素一样处理复杂元素,想要创建层次结构,组合模式是最理想的选择。

    相关文章

      网友评论

        本文标题:设计模式-之合成模式(三)

        本文链接:https://www.haomeiwen.com/subject/vpnojqtx.html