美文网首页
设计模式笔记(10)--组合模式

设计模式笔记(10)--组合模式

作者: 球球球球笨 | 来源:发表于2018-06-01 14:49 被阅读0次

组合模式--类似树结构

GOF对组合模式的定义是:“将对象组合成树形结构以表示“部分-整体”的层次结构。”
组合模式使得用户对单个对象和组合对象的使用具有一致性。

public abstract class Component
{
    //组件名称
    protected String componentName;
    public Component(String componentName){
       this.componentName = componentName;
    }
    //增加分支、叶子节点
    public abstract void Add(Component component);
    //移除分支、叶子节点
    public abstract void Remove(Component component); 
    //按照深度显示树形结构的方法
    public abstract void show(int depth);
}
//分支节点的类
public class Composite extends Component
{
    private List<Component> childrenList = new ArrayList<Component>();
    public Composite(String componentName)
    {
        super(componentName);
    }
    @Override
    public void Add(Component component)
    {
         childrenList.add(component);
    }
    @Override
    public void Remove(Component component) {
        childrenList.remove(component);
    }
    @Override
    public void show(int depth)
    {
         for(int i = 0;i<depth;i++){
              System.out.println('+');
         }
         System.out.print(componentName+'\n');
         for(int i = 0;i<childrenList.size();i++) {
             (Component)childrenList.get(i).Show(depth+2);
         }
    }
}

public class Leaf extends Component
{
    public Leaf(String componentName) {
        super(componentName);
    }
     @Override
    public void Add(Component component)
    {
         System.out.println("叶子节点无法增加新的子节点");
    }
    @Override
    public void Remove(Component component) {
         System.out.println("叶子节点无法移除节点");
    }
    @Override
    public void show(int depth)
    {
         for(int i = 0;i<depth;i++){
              System.out.println('+');
         }
         System.out.print(componentName+'\n');
    }
}

相关文章

网友评论

      本文标题:设计模式笔记(10)--组合模式

      本文链接:https://www.haomeiwen.com/subject/cotksftx.html