设计模式

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

2017-04-25  本文已影响12人  幺鹿

目录

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

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

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

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

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

组合模式的理论概念

学软件工程之前 学软件工程之后

组合模式的实现

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

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

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

场景演练:

TODO ://

组合模式在源码中的应用

TODO ://

组合 “优于” 继承

TODO ://

上一篇下一篇

猜你喜欢

热点阅读