Java设计模式之组合模式
2017-03-19 22:52
477 查看
转发请注明原文:http://blog.csdn.net/qq_34911465/article/details/63748421
组合模式
顾名思义,组合模式,就是将程序的各个部分组合在一起,每个部分都有联系。首先定义一个接口:
public abstract class Component{ protected String name; public Component(){ name = ""; } public Component(String _name){ if(_name!=null)name = _name; else name = ""; } //添加组件和删除组件的方法 public void addComponent(Component c){} public void removeComponent(Component c){} public void display(int i){} }
具体的组件类,这个类不能再包含其他的组件,故我们给它命名为叶子:
public class Leaf extends Component{ public Leaf(){ super(); } public Leaf(String name){ super(name); } //这个类里面无法再添加其他的组件,而且这里的组件也无法删除 public void addComponent(Component c){ System.out.println("Cannot add the component"); } public void removeComponent(Component c){ System.out.println("Cannot remove the component"); } public void display(int i){ for(int k = 0 ; k < i + 2 ; k++){ System.out.print("--"); } System.out.println(this.name); } }
定义一个组件类,这个类里面可以添加其他的组件:
import java.util.ArrayList; public class Composite extends Component{ protected ArrayList<Component> list; public Composite(){ super(); init(); } public Composite(String name){ super(name); init(); } public void init(){ list = new ArrayList<Component>(); } //这个组件可以拥有子组件,因此也可以删除子组件。 public void addComponent(Component c){ if(c!=null)list.add(c); } public void removeComponent(Component c){ if(c!=null)list.remove(c); } public void display(int i){ for(int k = 0 ; k < i + 2 ; k++){ System.out.print("-"); } System.out.println(this.name); for(int k = 0 ; k < list.size() ; k++){ list.get(k).display(i+1); } } }
这以上就是构建组合模式的基本过程,简单总结一下,就是先建立一个接口,不同类型的组件可以同时也需要在这个接口的基础上建立。
接着再建立一个叶子节点,代表无法添加子组件的类,同时实现接口中的方法,最后再创建一个组件类,在组件类中可以添加子组件,因此要使用某种数据结构来保存子组件。
使用组合模式的优点是可以将多个不同的类组合起来,在最高的节点可以通过某种方式访问到下面的节点。同时在用户的使用过程中更加统一。
相关文章推荐
- java 设计模式之: 组合模式(Composite)---1 【转】
- Java与设计模式-组合模式
- java设计模式——组合模式
- java设计模式之组合模式
- 设计模式之组合模式java实现
- Java与设计模式-组合模式
- JAVA设计模式之组合模式
- 设计模式--结构模式--组合模式--Java
- Java设计模式十六:组合模式(Composite Pattern)
- Java设计模式之十四(组合模式)
- Java设计模式(五)Facade(外观),Composite(组合),Decorator(油漆工)
- java 设计模式学习笔记八 composite组合模式
- JAVA设计模式:组合(Composite)
- java设计模式之组合模式
- java设计模式之组合模式
- java设计模式之 Composite(组合)
- Java设计模式——组合模式
- java 设计模式学习笔记八 composite组合模式
- 设计模式之组合模式java实现
- Java设计模式之迭代器模式和组合模式