你的位置:首页 > ASP.net教程

[ASP.net教程]ComponentPattern (组合模式)

import java.util.LinkedList;/** * 组合模式 * * @author TMAC-J 主要用于树状结构,用于部分和整体区别无区别的场景 想象一下,假设有一批连锁的理发店,你到每个店去理发都是等同的 *     那么假设不用组合模式,你到10家店理发,你需要知道这10家店或者是知道他们的父类店 *     然后new10次来统计消费情况,但是如果用组合模式,你只需要操作根节点就可以了 */public class ComponentPattern {/** * Component抽象类,该例子中每一个店都相当于一个节点 * */  abstract class Market {    public abstract void add(Market m);    public abstract void remove(Market m);    public abstract void PayByCard();  }    public class MarketBranch extends Market{        LinkedList<Market> markets = new LinkedList<Market>();        @Override    public void add(Market m) {      markets.add(m);    }    @Override    public void remove(Market m) {      markets.remove(m);    }    @Override    public void PayByCard() {      for(Market market:markets){        market.PayByCard();      }    }  }    public class MarketJoin extends Market{        @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() {      System.out.println("payByCard");    }  }    public void test(){    Market marketBranch = new MarketBranch();     Market marketJoin = new MarketJoin();    marketBranch.add(marketBranch);    marketBranch.add(marketJoin);    marketBranch.PayByCard();  }  }