标签:设计模式
接上篇,本文介绍结构型模式里的组合模式、装饰模式、外观模式。以李云龙的独立团为例,目的要统计赵嘉宇一战共歼灭敌人多少个。最高的级别是团,一个团有若干个营,一个营有若干个排,一个排有若干个战士。(为了简化问题,排下面就不设行政单位了)。很自然的,李云龙给营长开会回去给老子统计。营长回去给各个排长开会,赶紧统计。排长回去问问大家,数字报上去,汇报结束。这就是典型的组合模式。
组合模式涉及到Component(部件)、Leaf(叶子)、Composite(组合对象)三个概念。其中Component是组合中的对象声明接口,实现所有类共有接口的缺省行为。本例中Component类的设计至少有三个方法:addMember()(对应某个排新来一个战士)、deleteMember(某个士兵战死了,排长要将其删除)、getKillNumber()(这是通用行为获得杀敌数)。Leaf表示爷子接点,这里的士兵就是最底层的Leaf,他没有添加member的权利。1排排长、2排排长都是leaf,他们可以添加member。每个类里应维护一个List,用于管理属于它的member。那么这个排长就属于
一种组合了。下面附个完整例子:Java经典23种设计模式之结构型模式(二),布布扣,bubuko.com
标签:设计模式
原文地址:http://blog.csdn.net/yanzi1225627/article/details/37614029