自我联想学设计模式(初级版)-4-组合模式

版权声明:不自见故明;不自是故彰;不自伐故有功;不自矜故长; https://blog.csdn.net/LightUpHeaven/article/details/84727232

WHAT?

既然说了是组合,那么肯定参与组合的不止一个,是多个。但是不是任意对象组合起来都可以成为组合模式呢?

其实不然。

这多个对象,它们彼此之间必须有“整体/部分”的关系,并且你想用一致的方式对待这些兑现时,你就需要组合模式。

那么所谓的“整体/部分”关系,指的是什么呢?

HeadFirst里举例使用的用户界面,一些顶层组件(像是Frame或Panel)包含着其他组件(像菜单,文字面板,滚动条,按钮),你的GUI包含了若干部分,但是当你显示它的时候,你认为它是一个整体。你告诉顶层的组件显示,然后就放手不管,由顶层组件负责显示所有相关的部分。

这里的Menu中包含一个MenuComponent的列表,其中既可以放Menu,也可以放MenuItem。它们都继承了MenuComponent抽象类。

WHY?

很简单,如果我们打开任何一个软件,参考它的菜单的话,就会发现,其实点击了上层的菜单之后,下层菜单也都显示出来了,所以可以通过这个树状的结构,用最上面的根节点控制叶子节点的显示和动作。

HOW?

因为继承了相同的接口,所以可以层层传递,直接调用子类的函数

猜你喜欢

转载自blog.csdn.net/LightUpHeaven/article/details/84727232