java设计模式之组合模式
来源:互联网 发布:mac的鼠标不能按右键 编辑:程序博客网 时间:2024/05/17 18:16
组合模式
组合模式的作用:由于容器对象与叶子对象在功能上有所区别,在使用这些对象的客户端代码中必须有区别的对待容器对象与叶子对象,然而我们在使用它们的时候,希望一致的处理他们,因为对这些对象的区别对待会使程序变得非常复杂。 组合模式描述了如何将容器对象和叶子对象进行递归组合,让我们在使用它们时,不需要进行区别对待,可以一致的对待容器对象和叶子对象。
结合下面的例子,可以很好的理解组合模式。
import java.util.ArrayList; import java.util.List; public class PayDemo { public abstract class Market { String name; public abstract void add(Market m); public abstract void remove(Market m); public abstract void PayByCard(); } // 分店 下面可以有加盟店 public class MarketBranch extends Market { // 加盟店列表 List<Market> list = new ArrayList<PayDemo.Market>(); //关键 public MarketBranch(String s) { this.name = s; } @Override public void add(Market m) { // TODO Auto-generated method stub list.add(m); } @Override public void remove(Market m) { // TODO Auto-generated method stub list.remove(m); } // 消费之后,该分店下的加盟店自动累加积分 @Override public void PayByCard() { System.out.println(name + "消费,积分已累加入该会员卡"); for (Market m : list) { m.PayByCard(); } } } // 加盟店 下面不在有分店和加盟店,最底层 public class MarketJoin extends Market { public MarketJoin(String s) { this.name = s; } @Override public void add(Market m) { // TODO Auto-generated method stub } @Override public void remove(Market m) { // TODO Auto-generated method stub } @Override public void PayByCard() { // TODO Auto-generated method stub System.out.println(name + "消费,积分已累加入该会员卡"); } } public static void main(String[] args) { PayDemo demo = new PayDemo(); MarketBranch rootBranch = demo.new MarketBranch("总店"); MarketBranch qhdBranch = demo.new MarketBranch("秦皇岛分店"); MarketJoin hgqJoin = demo.new MarketJoin("秦皇岛分店一海港区加盟店"); MarketJoin btlJoin = demo.new MarketJoin("秦皇岛分店二白塔岭加盟店"); qhdBranch.add(hgqJoin); //分店添加加盟店 qhdBranch.add(btlJoin); rootBranch.add(qhdBranch); //总店添加分店 /* List< Market> list1 = rootBranch.list; for (Market market : list1) {System.out.println(market);}*/ rootBranch.PayByCard(); } }
阅读全文
0 0
- java设计模式之组合设计模式
- java设计模式之组合模式
- java设计模式之组合模式Composite
- JAVA设计模式之组合模式
- java设计模式之组合模式
- 设计模式之组合模式java实现
- java设计模式之组合模式
- 【Java设计模式】之组合模式
- Java设计模式之组合模式
- Java设计模式泛型化之组合模式
- java设计模式之组合模式
- JAVA设计模式初探之组合模式
- JAVA设计模式初探之组合模式
- java设计模式之组合模式
- java设计模式之组合模式
- JAVA设计模式初探之组合模式
- java设计模式之组合模式篇
- Java设计模式之组合模式
- MathJax基础(8):连续分式
- opencv python 图片腐蚀和膨胀
- c语言中,关于延迟函数的理解
- Python学习笔记(5)文件&异常
- 最远距离(C++实现)
- java设计模式之组合模式
- BZOJ 1029-建筑抢修(贪心)
- 如何才能不断成长杂谈
- 【linux】:模拟实现sleep函数
- ajax提交如何监听“enter”“手机键盘确定”事件
- c/c++整理--c++继承
- 交互软件的登录界面
- <划重点的Unity2017> 人物相关的物理系统组件详述
- Struts 2(初步)