个人理解;
1. 组合模式:将对象组合成树形结构以表示“部分—整体”的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。它将对象组织到树结构中,可以用来描述整体与部分的关系。同时它也模糊了简单元素(叶子对象)和复杂元素(容器对象)的概念,使得客户能够像处理简单元素一样来处理复杂元素,从而使客户程序能够与复杂元素的内部结构解耦。
2. 在Android开发中用到组合模式并不很多,组合模式更多的用于界面UI的架构设计上,而这部分让开发者去实现的并不多。组合模式在Android 中应用举例:文件系统:Dir File 等,操作控件:View、ViewGroup等
3. 组合模式有透明模式、安全模式两种,区分在于叶子节点有没有开放add、remove操作
4. 组合模式优点:
- 可以清楚定义分层次的复杂对象,表示全部或部分层次,让高层忽略层次的差异,方便对整个层次结构进行控制。
- 高层模块可以一致的使用一个组合结构或其中的单个对象,不必挂心处理的是单个对象还是整个组合结构,简化了高层模块的代码。
- 增加新的枝干和叶子构件都很方便,无需对现有类进行任何修改,就像增加一个自定义View一样。
- 将对象之间的关系形成树形结构,便于控制。
5. 组合模式UML图:
6. 示例代码:
Component:
public abstract class Component { protected String name; public Component(String name) { this.name = name; } public abstract void add(Component component); public abstract void remove(Component component); public abstract void clear(); public abstract Component getComponent(int position); public abstract void doSomething(); }
Composite:
public class Branches extends Component { private List<Component> comp