组合模式

来源:互联网 发布:会声会影软件多少钱 编辑:程序博客网 时间:2024/05/14 03:49

作用:用面向对象模式,处理树结构。

将多个对象,组合成树。  用户用 单个子节点,就和使用树一样。有一致性。

你在总部办的会员卡,可以在分店使用。


需求,部分与整体层级明显。但是用户可以忽略这个 等级制度。都可以去使用。  就可以使用组合模式。


总部:

public abstract class Market{     private String name;     public abstract void add(Market m);     public abstract void remove(Market m);     public abstract void payByCard();}
总部旗下的加盟店:
public class BranchMarket extends Market{     List<Market> list = new ArrayList<Market>();     public BranchMarket(String name){          this.name = name;     }     public void add(Market m){          list.add(m);     }     public void remove(Market m){          list.remove(m);     }     public void payByCard(){          System.out.println("您在"+name+"消费,已记账");         for(Market m:list){m.payCard();}  //分店积分累积增加。     }}
//加盟店下的分店

public class MarketJoin extends Market{     public MarketJoin(String name){          this.name = name;     }     public void add(Market m){}     public void remove(Market m){}     public void payByCard(){          System.out.println("您在"+name+"消费,已记账");     }}

客户端使用:

main(){     BranchMarket root = new MarketBranch("总店");     BranchMarket shroot = new MarketBranch("上海总店");     MarketJoin join1 = new MarketJoin("分店1");     MarketJoin join2 = new MarketJoin("分店2");     shroot.add(join1);     shroot.add(join2);     root.add(shroot);     root.payCard();}


不管你是在总部刷卡,还是分部刷卡,都可以有效累积积分。

不用关系是子节点,还是叶子节点。

不管是哪一个节点。你去访问都是可以的。





0 0
原创粉丝点击