组合模式

来源:互联网 发布:电脑开票软件 编辑:程序博客网 时间: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
原创粉丝点击