组合模式
来源:互联网 发布:电脑开票软件 编辑:程序博客网 时间:2024/05/16 04:34
定义:组合模式也叫合成模式,有时又叫做部分--整体模式,主要用来描述部分与整体的关系,将对象组合成树形结构以表示“部分--整体”的层次结构,使得用户对单个对象和组合对象的使用具有一致性。
组合模式有以下几个角色:
Component抽象构件角色 定义参加组合对象的共有方法和树形,可以定义一些默认的行为或属性。
Leaf 叶子构件 叶子对象,其下再也没有其他的分支,是遍历的最小单位。
Composite 树枝构件 树枝对象,它的作用是组合树枝节点和叶子节点形成一个树形结构。
public abstract class Component {public void doSomething(){}}
public class Composite extends Component {private ArrayList<Component> components = new ArrayList<Component>();//增加一个叶子构件或者树枝构件public void add(Component component){this.components.add(component);}//删除一个叶子构件或者树枝构件public void remove(Component component){this.components.remove(component);}//获得分之下的所有叶子构件和树枝构件public ArrayList<Component> getChildren(){return this.components;}}
public class Leaf extends Component {//可以覆写父类方法@Overridepublic void doSomething() {super.doSomething();}}
public class Client {public static void main(String[] args){Composite root = new Composite();root.doSomething();Composite branch = new Composite();Leaf leaf = new Leaf();root.add(branch);branch.add(leaf);}}
组合模式的优点:
1. 高层模块调用简单
2.节点自由增加
缺点:与依赖倒置原则冲突,直接使用了实现类
使用场景
1.维护和展示部分-整体关系的场景,如树形菜单、文件和文件夹管理。
2.从一个整体中能够独立出部分模块或功能的场景
android中的view和viewgroup就是组合模式
View是Component角色
ViewGroup是Composite角色
TextView等view是leaf角色
0 0
- 组合模式
- 组合模式
- 组合模式
- 组合模式
- 组合模式
- 组合模式
- 组合模式
- 组合模式
- 组合模式
- 组合模式
- 组合模式
- 组合模式
- 组合模式
- 组合模式
- 组合模式
- 组合模式
- 组合模式
- 组合模式
- 组合模式
- android坐标
- 无监督学习(Unsupervised Learning)
- mahout实现查准率和查全率评估的配置与运行
- Remove Linked List Elements
- 组合模式
- 【整理】国内一些大公司的开源项目
- 决策树ID3算法C++代码及测试用例(bug版)
- POJ题目2096 Collecting Bugs(概率dp)
- 第一次写JSP程序可能会碰到的问题:The superclass "javax.servlet.http.HttpServlet" was not found on the Java Build Pa
- Apache CXF REST example
- MP4文件格式的解析,以及MP4文件的分割算法(转)
- 学习这个东西
- 【牛腩新闻发布系统】——Static的使用