组合模式

定义

将对象以树形结构组织起来,以达成“部分-整体” 的层次结构,使得客户端对单个对象和组合对象的使用具有一致性。

组合体内这些对象都有共同接口,当组合体一个对象的方法被调用执行时,Composite将遍历(Iterator)整个树形结构,寻找同样包含这个方法的对象并实现调用执行。可以用牵一动百来形容。

比如连锁店,连锁店在各个大地区一般都有一个总店。你在A店(总店)办了会员卡,在B店(分店)一样可以用,反之亦然。但B店在公司内部却是归A管的,而客户则不用关心这个层次关系,客户只需要在各个店都有相同的服务即可。

类构造图


涉及角色:

l  Component:是组合中的对象声明接口,在适当的情况下,实现所有类共有接口的默认行为。声明一个接口用于访问和管理Component子部件。

l  Leaf:在组合中表示叶子结点对象,叶子结点没有子结点。

l  Composite:定义有枝节点行为,用来存储子部件,在Component接口中实现与子部件有关操作,如增加(add)和删除(remove)等。

l  Client:可以调用任何Component共同拥有的方法,虽然每个Component有所不同,但对客户来说,提供的服务却是一样的。

适用性

1.你想表示对象的部分-整体层次结构

2.你希望用户忽略组合对象与单个对象的不同,用户将统一地使用组合结构中的所有对象。

你可能感兴趣的:(设计模式)