组合模式:将对象组合成树形结构,以表示“部分-整体”的层次结构(一般是树形结构)。用户可以像处理一个简单对象一样处理一个复杂对象,从而使得调用者无须了解复杂元素的内部结构。
抽象组件 (Component):Component接口定义了树形结构中所有类的公共行为,例如这里的operation()方法。一般情况下,还会定义一些用于管理子组件的方法,例如add(),remove(),getChild();
树叶(Leaf):Leaf在树形结构中表示叶节点对象,叶节点没有子节点。
树枝(Composite):定义有子组件的那些组件的行为。该角色用于管理子组件,并通过operation()方法调用其管理的子组件的相关功能。
调用者(Client):通过Component接口操纵整个树形结构。
优点:
1、组合模式可以帮助调用者屏蔽对象的复杂性,对于调用者来说,使用整个树形结构与使用单个Component对象没有任何区别,也就是说,调用者并不比关心自己处理的是单个Component对象还是整个树形结构,这样就可以将调用者与复杂对象进行解耦。
2、可以通过添加树中节点的方式,添加新的Component对象,从而实现功能上的扩展。
mybatis中的应用:处理动态sql节点