美文网首页设计模式
组合模式(统一叶子与组合对象)

组合模式(统一叶子与组合对象)

作者: 幺鹿 | 来源:发表于2017-04-25 15:18 被阅读12次

目录

  • 从生活场景出发,映射组合模式
  • 组合模式的理论概念
  • 组合模式的实现
  • 组合模式在源码中的应用
  • 组合 “优于” 继承

从生活场景出发,映射组合模式

  • 轮船上的集装箱
轮船上的集装箱
  • 集装箱内的盒子
集装箱内的盒子

情景说明:海运轮船上有很多集装箱,集装箱里面又装满了更小的包装箱。一般情况下,集装箱集装箱单独排列组合。包装箱包装箱单独排列组合。虽然如此,但并不妨碍现实生活中在集装箱旁边放许多个包装箱

这里我们不探讨,如何装配可以装入更多的箱子问题。有兴趣的同学,自行百度百科>>装箱问题

设计模式某些时候就是映射生活中的最佳实践,就像上面的生活场景一样。我们需要使用软件设计思想将其表达出来,在这里组合模式就显得很合适了。在继续之前我先梳理下组合模式的理论知识,以确保在讲实现的时候会比较自然。

组合模式的理论概念

学软件工程之前 学软件工程之后
  • 组合模式的定义:将对象组合成树形结构(如上面两幅图)以表示“部分-整体”的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。

  • 组合模式的目的:让客户端不再区分操作的是组合对象还是叶子对象,而是以一个统一的方式来操作。

  • 何时备选用组合模式

    • 如果你想表示对象的部分-整体层次结构时。
    • 如果你希望统一的使用组合对象中的所有对象。

组合模式的实现

在集装箱问题上,我们先抽象出容器的概念。无论是集装箱,还是包装箱都隶属于容器的范畴。容器可以装物品,也可以装更小容器。一个容器在生活是用来装物品,还是用来装容器这个也全凭客户的喜好。

先对问题进行分析,抽象出如下几个角色。

角色 能力描述
容器 具备载物能力
容器(集装箱) 具备强大的载物能力
容器(包装箱) 具备较小的载物能力
容器(航海货轮) 神一样的载物能力
实体 不具备载物能力
客户端(暴发户小张) 有钱任性

场景演练:

  • 暴发户小张,买了一艘货轮用来给自己搬家。
  • 暴发户小张指挥工人,把实体搬进集装箱。
  • 暴发户小张指挥吊车,把集装箱搬进货轮。
  • 暴发户小张开走了货轮,中途撞冰山沉了……

TODO ://

组合模式在源码中的应用

TODO ://

组合 “优于” 继承

TODO ://

相关文章

  • 组合模式(统一叶子与组合对象)

    目录 从生活场景出发,映射组合模式 组合模式的理论概念 组合模式的实现 组合模式在源码中的应用 组合 “优于” 继...

  • 组合模式

    组合模式的作用 组合模式将对象组成树形结构,以表示'整体-部分'的结构。利用对象的多态性统一对待组合对象和单个对象...

  • 组合模式

    组合模式简述 组合模式组合多个对象形成树形结构以表示“整体-部分”的结构层次。它定义了如何将容器对象和叶子对象进行...

  • java设计模式08(组合模式)

    组合模式用于组合多个对象形成树形结构以表示具有部分-整体关系的层次结构。组合模式让客户端可以统一对待单个对象和组合...

  • 组合模式(Composite)

    组合多个对象形成树形结构以表示具有“整体—部分”关系的层次结构。组合模式对单个对象(即叶子对象)和组合对象(即容器...

  • 组合模式

    组合模式的设计动机:组合模式定义了如何将容器对象和叶子对象进行递归组合,使得客户在使用的过程中无须进行区分,可以对...

  • 组合模式

    简介 组合模式使单个对象和组合对象的使用具有一致性,让用户能够以统一的接口来处理单个对象以及组合对象。比如...

  • 组合模式原型解析

    组合模式定义: 组合模式,将对象组合成树形结构以表示“部分-整体”的层次结构,组合模式使得用户对单个对象和组合对象...

  • 设计模式之组合模式

    组合模式 组合模式,将对象组合成树形结构以表示“部分-整体”的层次结构,组合模式使得用户对单个对象和组合对象的使用...

  • 大话设计模式(7) --- 组合模式|迭代器模式|单例模式

    1. 组合模式 组合模式,将对象组合成树形结构以表示‘部分-整体’的层次结构。组合模式使得用户对单个对象和组合对象...

网友评论

    本文标题:组合模式(统一叶子与组合对象)

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