一、什么是组合模式?
1、将对象组合成树形结构,已表示“整体"与"局部"的层次结构,使用用户对单个对象(比如叶子)和组合对象(非叶子节点)的使用具有一致性,用户不需要关系操作的节点是基本对象节点还是组合对象节点
通俗理解: 就是非叶子节点的方法,叶子节点一样可以调用,只不过是在叶子节点的实现方法中,告诉用户无效或者无法操作该方法,有人会问,既然不能用为啥要暴露? 我想是不是有个场景: 如果当初的叶子节点,后面需求改为是非叶子节点,也可以添加孩子,那是不是要去改原来的叶子节点代码,让它去支持非叶子节点的相关操作,而使用”一致性" 后,只要改实现类即可。
二、角色?
1、角色一: 抽象节点,定义组合对象的共有方法和属性
2、角色二: 具体节点(树枝节点), 定义组合树枝节点和叶子节点形成一个树形结构。
3、角色三: 叶子节点, 构成组合树的最小构建单元。
三、Android中用到的 View的结构图