首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 操作系统 >

对设计方式—Composite模式的认识

2012-11-12 
对设计模式—Composite模式的认识Composite模式定义:将对象以树形结构组织起来,以达成“部分-整体” 的层次结

对设计模式—Composite模式的认识
Composite模式定义:
将对象以树形结构组织起来,以达成“部分-整体” 的层次结构,使得客户端对单个对象和组合对象的使用具有一致性.
Composite好处:
1.使客户端调用简单,客户端可以一致的使用组合结构或其中单个对象,用户就不必关系自己处理的是单个对象还是整个组合结构,这就简化了客户端代码。
2.更容易在组合体内加入对象部件. 客户端不必因为加入了新的对象部件而更改代码

 如一棵树有树枝和叶子,树枝也有叶子,叶子为最小的部分.从大到小顺序Tree->Limb->Leaf

public abstract class Component{    public String name;    public ArrayList<Component> list;    public Boolean Add(Component item)    {        return false;    }    public Boolean Remove(Component item)    {        return false;    }     public abstract void print();    public abstract void Operation();}public class CompositeComponent extends Component{    public CompositeComponent()    {        list = new ArrayList<Component>();    }    @Override    public void Operation()    {        for (Component item : list)        {            item.print();            item.Operation();        }    }    public Boolean Add(Component item)    {        list.add(item);        return true;    }     public Boolean Remove(Component item)    {        int i = list.indexOf(item);        if (i > 0)        {            list.remove(i);        }        return true;    }    public void print()    {           System.out.println("This is  Root");    }}public class LimbCoponent extends CompositeComponent{    public void print()    {        System.out.println(name);    }}public class Leaf extends Component{    @Override    public void print()    {        System.out.println(name);    }    public void Operation()    {        System.out.println("Defoliation on wings");    }}public class TestComposite{    public static void main(String[] args)    {        Component tree = new CompositeComponent();        Component leaf = new Leaf();        Component limb = new LimbCoponent();        limb.name = "This is an limb";        leaf.name = "This is an leaf";        limb.Add(leaf);        tree.Add(limb);        tree.Operation();                  }}

热点排行