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

目录

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

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

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

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

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

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

组合模式的理论概念

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

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

  • 何时备选用组合模式

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

组合模式的实现

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

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

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

场景演练:

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

TODO ://

组合模式在源码中的应用

TODO ://

组合 “优于” 继承

TODO ://

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,390评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,821评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,632评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,170评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,033评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,098评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,511评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,204评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,479评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,572评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,341评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,213评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,576评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,893评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,171评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,486评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,676评论 2 335

推荐阅读更多精彩内容

  • 从“集装箱”思考Docker风潮 - 推酷 http://www.tuicool.com/articles/A7R...
    葡萄喃喃呓语阅读 1,198评论 0 2
  • 1 场景问题# 1.1 商品类别树## 考虑这样一个实际的应用:管理商品类别树。 在实现跟商品有关的应用系统的时候...
    七寸知架构阅读 5,937评论 10 59
  • 1、集装箱 (1)具有一定的强度,可以反复使用 (2)适用于 多种运输方式 运送,途中无需倒装货物。 (3)设有 ...
    ChalilFong阅读 1,807评论 0 2
  • 信念 毫不疑问 就是— 你要坚持的那个目标 虽然说 没个人的信念 只有极少人完成了 但那另一些人 他们也坚持了他们...
    小绿lv_阅读 185评论 0 2
  • 在不停辗转的岁月里欢歌或是悲鸣,不经意间又是染霜的梧桐、碧色的天空、瑟瑟的风。迷惘依旧,怅然依旧,说不清的来由。...
    燃心阅读 228评论 0 3