1. 程式人生 > >設計模式之中介者模式 Mediator

設計模式之中介者模式 Mediator

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