开场还是一样的画面,各位嘉宾往下看……什么是组合模式?组合模式,将对象组合成树状结构以表示“部分-整体”层次结构。(百度百科)其实组合模式,也叫局部整体模式,是用来把一组相似的对象当作一个单独的对象来处理的。Composite模式根据树结构组合对象,用于表示部分和整个层次结构。这种类型的设计模式是一种结构模式,它创建对象组的树结构。关键词:一致性、整体、部分比如公司的组织结构是一个树形结构:公司下有部门和人,人归部门,部门又可以有子部门。如果我们用上面的节点,不管是什么组织,还是一个人,统一抽象成一个节点。那么,我们就不需要关心当前节点是个人还是部门了。在统计人数或者遍历的时候,一视同仁。另外,在JavaSwing编程中,一般都有容器这个词:Container,我们可以在Container里面放子容器,也可以放具体的组件,比如Button或者Checkbox,其实这也是一部分——整个思维。此外,最经典的是文件夹和文件的表示。文件夹(容器对象)可以存储文件夹(容器对象)和文件(叶对象)。如果树的每个节点都被展平,那么它就是一个List。树形结构更直观地反映了每个节点与整体的关系。为什么需要这种模式?它的目的是什么?主要目的是为外界提供一致的使用方式。即使容器对象和叶子对象之间的属性可能有很大的不同,但我们希望能够抽象出相同的地方,并进行一致的处理。Composite模式的作用Composition模式一般有以下三种作用:抽象组件(Component):一般是接口或抽象类,为叶子组件和容器组件对象声明接口,抽象出访问和管理子组件的方法。叶子节点(Leaf):表示组合中的叶子节点对象,叶子节点没有子节点,所以也就没有子组件。Composite:一个容器节点可以包含子节点,子节点可以是叶子节点,也可以是容器节点。注意:重点是抽象组件,所有节点统一,调用者不再需要关心叶子节点和非叶子节点的区别。组合模式有两种不同的实现方式,即透明模式和安全模式:两者的区别在于透明模式将组合使用的方法放在抽象类中,而安全模式将方法放在具体中类中实现透明模式透明模式是将组合方法抽象成一个抽象类。不管是叶子节点还是组合节点,都有相同的方法,这样对外的处理是一致的,但实际上有些方法和叶子节点是不一样的。言语是无用的,而且有些麻烦。下面是代码实现:抽像类,要求实现三个方法,增加,删除,展示:packagedesignpattern.composite;publicabstractclassComponent{Stringname;publicComponent(Stringname){this.name=name;}publicabstractvoidadd(组件组件);publicabstractvoidremove(组件组件);publicabstractvoidshow(intdepth);}组合类:importjava.util.ArrayList;importjava.util.List;publicclassCompositeextendsComponent{List
