Java设计模式之组合模式
来源:互联网 发布:敬汉卿 知乎 编辑:程序博客网 时间:2024/06/14 09:00
转发请注明原文: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); } }}
这以上就是构建组合模式的基本过程,简单总结一下,就是先建立一个接口,不同类型的组件可以同时也需要在这个接口的基础上建立。
接着再建立一个叶子节点,代表无法添加子组件的类,同时实现接口中的方法,最后再创建一个组件类,在组件类中可以添加子组件,因此要使用某种数据结构来保存子组件。
使用组合模式的优点是可以将多个不同的类组合起来,在最高的节点可以通过某种方式访问到下面的节点。同时在用户的使用过程中更加统一。
0 0
- java设计模式之组合设计模式
- java设计模式之组合模式
- java设计模式之组合模式Composite
- JAVA设计模式之组合模式
- java设计模式之组合模式
- 设计模式之组合模式java实现
- java设计模式之组合模式
- 【Java设计模式】之组合模式
- Java设计模式之组合模式
- Java设计模式泛型化之组合模式
- java设计模式之组合模式
- JAVA设计模式初探之组合模式
- JAVA设计模式初探之组合模式
- java设计模式之组合模式
- java设计模式之组合模式
- JAVA设计模式初探之组合模式
- java设计模式之组合模式篇
- Java设计模式之组合模式
- IoC容器
- assert()函数用法
- 性能测试工具JMeter的使用
- Struts2拦截器的使用 (详解)(转)
- 八大排序——直接插入排序
- Java设计模式之组合模式
- 认识数字图像
- JavaWeb——eclipse与tomcat环境配置
- 中文技术文档的写作规范
- LeetCode #10 Regular Expression Matching
- VestaCP 跨站访问权限修改
- Windows基本数据类型
- vue组件最佳实践
- PHP实现页面跳转三种技巧