android 组合模式

1意图

  将对象以树形结构组织起来,以达成“部分-整体” 的层次结构,使得客户端对单个对象和组合对象的使用具有一致性.,就是调用单个对象,和组合对象的方法尽量统一起来,当你想到树形结构的时候,你应该首先想到组合模式。

2结构

android 组合模式_第1张图片

3代码



public class Main {
public static void main(String[] args) {
Composite root=new Composite();
root.setName("根节点");
Composite left=new Composite();
left.setName("左子树");
Leaf leftLeaf=new Leaf();
leftLeaf.setName("左子树的叶子");
left.add(leftLeaf);
Composite right=new Composite();
right.setName("右子树");
Leaf rightLeaf=new Leaf();
rightLeaf.setName("右子树的叶子");
right.add(rightLeaf);
root.add(left);
root.add(right);
root.eachChild();
}


}
abstract class Component{
public String name;
public abstract void add(Component component);
public abstract void remove(Component component);
public abstract void eachChild();
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
class Composite extends Component{
private Listlist=new ArrayList();
@Override
public void add(Component component) {
list.add(component);
}


@Override
public void remove(Component component) {
// TODO Auto-generated method stub
list.remove(component);
}


@Override
public void eachChild() {
System.out.println("组合节点的名字:"+name);
for(Component component:list){
component.eachChild();
}
}

}
class Leaf extends Component{


@Override
public void add(Component component) {

}


@Override
public void remove(Component component) {

}


@Override
public void eachChild() {
System.out.println("叶子节点的名字:"+name);
}

}

4在android源码中的体现

android 组合模式_第2张图片


你可能感兴趣的:(android 组合模式)