java设计模式之组合模式
来源:互联网 发布:程序员工作心得体会 编辑:程序博客网 时间:2024/06/05 05:38
参考:http://blog.csdn.net/jason0539/article/details/22642281
- 先看看组合模式的定义吧:“将对象组合成树形结构以表示‘部分-整体’的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。”
使用条件:一种行为/动作在一个地方做出,其它地方都会有同样的动作。如会员卡积分。在分店、加盟店、总店积分是相同的。 - 设计:一个超类定义刷卡等方法,一个组合类(总店和分店组合,有list<>集合)继承超类并且在要求的“动作/行为”中,做list循环为list(所有)中类递归调用,不知道这属不属于递归,,一个叶子类继承超类,
“`
[java] view plain copy print?在CODE上查看代码片派生到我的代码片
import java.util.ArrayList;
import java.util.List;
public class ComponentDemo {
public abstract class Component {
String name;
public abstract void add(Component c); public abstract void remove(Component c); public abstract void eachChild(); } // 组合部件类 public class Leaf extends Component { // 叶子节点不具备添加的能力,所以不实现 @Override public void add(Component c) { // TODO Auto-generated method stub System.out.println(""); } // 叶子节点不具备添加的能力必然也不能删除 @Override public void remove(Component c) { // TODO Auto-generated method stub System.out.println(""); } // 叶子节点没有子节点所以显示自己的执行结果 @Override public void eachChild() { // TODO Auto-generated method stub System.out.println(name + "执行了"); } } // 组合类 public class Composite extends Component { // 用来保存节点的子节点 List<Component> list = new ArrayList<Component>(); // 添加节点 添加部件 @Override public void add(Component c) { // TODO Auto-generated method stub list.add(c); } // 删除节点 删除部件 @Override public void remove(Component c) { // TODO Auto-generated method stub list.remove(c); } // 遍历子节点 @Override public void eachChild() { // TODO Auto-generated method stub System.out.println(name + "执行了"); for (Component c : list) { c.eachChild(); } } } public static void main(String[] args) { ComponentDemo demo = new ComponentDemo(); // 构造根节点 Composite rootComposite = demo.new Composite(); rootComposite.name = "根节点"; // 左节点 Composite compositeLeft = demo.new Composite(); compositeLeft.name = "左节点"; // 构建右节点,添加两个叶子几点,也就是子部件 Composite compositeRight = demo.new Composite(); compositeRight.name = "右节点"; **Leaf leaf1** = demo.new Leaf(); leaf1.name = "右-子节点1"; **Leaf leaf2** = demo.new Leaf(); leaf2.name = "右-子节点2"; compositeRight.add(leaf1); compositeRight.add(leaf2); // 左右节点加入 根节点 rootComposite.add(compositeRight); rootComposite.add(compositeLeft); // 遍历组合部件 rootComposite.eachChild(); }
}
“`
阅读全文
0 0
- java设计模式之组合设计模式
- java设计模式之组合模式
- java设计模式之组合模式Composite
- JAVA设计模式之组合模式
- java设计模式之组合模式
- 设计模式之组合模式java实现
- java设计模式之组合模式
- 【Java设计模式】之组合模式
- Java设计模式之组合模式
- Java设计模式泛型化之组合模式
- java设计模式之组合模式
- JAVA设计模式初探之组合模式
- JAVA设计模式初探之组合模式
- java设计模式之组合模式
- java设计模式之组合模式
- JAVA设计模式初探之组合模式
- java设计模式之组合模式篇
- Java设计模式之组合模式
- 算法练习
- C++第五次实验
- python标准库手记【3】
- hibernate主要测试方法
- 小易的升级之路(网易笔试)
- java设计模式之组合模式
- Java object类
- CSS动画:
- ssh远程登录
- 【Effection C++】读书笔记 条款26:尽可能延后变量定义式的出现时间
- 关于threadlocal
- 弹窗遮罩的几种实现方式
- React Native 从入门到原理
- Web11页面布局