設計模式之中介者模式 Mediator
阿新 • • 發佈:2017-09-05
mar class art logs super ace gis and log
代碼實現
public interface Mediator { void register(String dname,Department d); void command(String dname); }中介者接口
/* * 同事類接口 */ public interface Department { void selfAction(); //做本部門工作 void outAction(); //向總經理發出申請 }同事類接口
public class Development implements Department{同事類實現private Mediator m ; //持有中介者(總經理)的引用 public Development(Mediator m) { super(); this.m = m; m.register("development", this); } @Override public void selfAction() { System.out.println("開發項目"); } @Override public void outAction() { System.out.println("匯報工作,需要資金支持"); } } public class Finacial implements Department{ private Mediator m ; //持有中介者(總經理)的引用 public Finacial(Mediator m) { super(); this.m = m; m.register("finacial", this); } @Override public void selfAction() { System.out.println("數錢"); } @Override public void outAction() { System.out.println("匯報工作,錢怎麽分配"); } } public class Market implements Department{ private Mediator m ; //持有中介者(總經理)的引用 public Market(Mediator m) { super(); this.m = m; m.register("market", this); } @Override public void selfAction() { System.out.println("接項目"); } @Override public void outAction() { System.out.println("匯報工作,最新市場動態,需要資金支持"); m.command("finacial"); } }
public class President implements Mediator{ private Map<String,Department> map = new HashMap<String,Department>(); @Override public void register(String dname, Department d) { map.put(dname,d); } @Override public void command(String dname) { map.get(dname).selfAction(); } }中介者實現
public class Client { public static void main(String[] args) { Mediator m = new President(); Market market = new Market(m); Development devp = new Development(m); Finacial f = new Finacial(m); market.selfAction(); market.outAction(); } }測試
設計模式之中介者模式 Mediator