java设计模式之组合模式
来源:互联网 发布:淘宝买家仅退款不退货 编辑:程序博客网 时间:2024/06/10 22:57
组合模式:允许你将对象组合成树形结构来表现“整体/部分”层次结构。组合能让客户以一致的方式处理个别对象以及对象组合。
组合模式类图:
Client:客户使用Component接口操作组合中的对象。
Component:Component为组合中的所有对象定义一个接口,不管是组合还是节点,Component可以为add(),remove(),eachChild()实现一些默认的行为。
Leaf:叶节点没有孩子。叶节点通过实现Composite支持的操作,定义了组合内元素的行为。
Composite:Composite的角色是要定义组件的行为,而这样的组件具有子节点。
抽象类Component代码实现:
public abstract class Component { String name; public Component(String name){ this.name = name; } public abstract void Add(Component component); public abstract void remove(Component component); public abstract void eachChild();}
Leaf类代码实现:
public class Leaf extends Component{ public Leaf(String name) { super(name); // TODO Auto-generated constructor stub } @Override public void Add(Component component) { // TODO Auto-generated method stub } @Override public void remove(Component component) { // TODO Auto-generated method stub } @Override public void eachChild() { // TODO Auto-generated method stub System.out.println("叶节点:"+name); }}
Composite类代码实现:
public class Composite extends Component{ ArrayList<Component> list = new ArrayList<Component>(); public Composite(String name) { super(name); // TODO Auto-generated constructor stub } @Override public void Add(Component component) { // TODO Auto-generated method stub list.add(component); } @Override public void remove(Component component) { // TODO Auto-generated method stub list.remove(component); } @Override public void eachChild() { // TODO Auto-generated method stub System.out.println("节点:"+name); for(Component component : list){ component.eachChild(); } }}
Client类代码实现:
public class Client { public static void main(String[] args){ Component rootComposite = new Composite("根节点"); Component leftComposite = new Composite("左子节点"); Component rightComposite = new Composite("右子节点"); Component leftleaf1 = new Leaf("左叶节点1"); Component leftleaf2 = new Leaf("左叶节点2"); leftComposite.Add(leftleaf1); leftComposite.Add(leftleaf2); rootComposite.Add(leftComposite); rootComposite.Add(rightComposite); rootComposite.eachChild(); }}
运行结果:
节点:根节点节点:左子节点叶节点:左叶节点1叶节点:左叶节点2节点:右子节点
0 0
- java设计模式之组合设计模式
- java设计模式之组合模式
- java设计模式之组合模式Composite
- JAVA设计模式之组合模式
- java设计模式之组合模式
- 设计模式之组合模式java实现
- java设计模式之组合模式
- 【Java设计模式】之组合模式
- Java设计模式之组合模式
- Java设计模式泛型化之组合模式
- java设计模式之组合模式
- JAVA设计模式初探之组合模式
- JAVA设计模式初探之组合模式
- java设计模式之组合模式
- java设计模式之组合模式
- JAVA设计模式初探之组合模式
- java设计模式之组合模式篇
- Java设计模式之组合模式
- revit二次开发——从族实例中取得几何信息
- 单例模式,你所应该知道的一切
- 在WebStorm里配置watcher实现编辑less文件时自动生成.map和压缩后的.css文件
- ℃江让您从精通到入门:第一次
- HDU1698 Just a Hook 线段树成段替换
- java设计模式之组合模式
- tcp为什么需要3次握手和3次握手的过程
- dfs走迷宫
- python优雅实现策略模式
- Sticks --dfs 剪枝
- java编程思想读书笔记--第四章 控制执行流程
- 用穷举法解决皇后问题
- Android 热修复 Tinker接入及源码浅析
- 反转单词顺序