上图为经典的组合模式图,Client为抽象类,View抽象类继承Client。
- Button类为叶子节点,继承View抽象类,实现Operation方法。
- ViewGroup为抽象类,新增了一个View类型的ArrayList数组和几个方法(实现对View抽象类的子类的管理,如增加,删除,获取等等其他方法),可以将其看做一个抽象容器类。
- 容器类(如图中的LinearLayout类和Framework类)除了装叶子节点(如Button,TextView)外,还可以装容器(如继承了抽象类ViewGroup的LinearLayout类和Framework类)。他也实现了Operation方法。