<<设计模式之禅(第二版)>>——第十四

2016-10-15  本文已影响9人  leiiiooo
定义:
常用类图:
中介者模式通用类图
 /*
 * 定义抽象的中介者类
 * 如果每个具体的同事实现类,有各自特有的方法,那么注入的时候
 * 应该使用的是同事实现类进行注入,如果每个同事类都有相同的方法,
 * 那么应该使用抽象注入,做到依赖倒置原则
 * */
public abstract class Mediator {
  // 注入具体的同事类
  ConcreteColleagueOne concreteColleagueOne;
  ConcreteColleagueTwo concreteColleagueTwo;

  public ConcreteColleagueOne getConcreteColleagueOne() {
    return concreteColleagueOne;
  }

  public void setConcreteColleagueOne(ConcreteColleagueOne concreteColleagueOne) {
    this.concreteColleagueOne = concreteColleagueOne;
  }

  public ConcreteColleagueTwo getConcreteColleagueTwo() {
    return concreteColleagueTwo;
  }

  public void setConcreteColleagueTwo(ConcreteColleagueTwo concreteColleagueTwo) {
    this.concreteColleagueTwo = concreteColleagueTwo;
  }

  // 中介者处理事务的抽象逻辑
  abstract void doSomethinOne();

  abstract void doSomethinTwo();

  abstract void doSomethinThree();

  abstract void doSomethinFour();

}
public class ConcreteMediator extends Mediator {

  @Override
  void doSomethinOne() {
    super.concreteColleagueOne.ownMethod();
    super.concreteColleagueTwo.ownMethod();

  }

  @Override
  void doSomethinTwo() {
    // TODO Auto-generated method stub

  }

  @Override
  void doSomethinThree() {
    // TODO Auto-generated method stub

  }

  @Override
  void doSomethinFour() {
    // TODO Auto-generated method stub

  }

}
/*
 * 抽象的同事类,注入中介者
 * */
public abstract class Colleague {
protected Mediator mediator;

public Colleague(Mediator mediator) {
    this.mediator = mediator;
}
}
public class ConcreteColleagueOne extends Colleague {

public ConcreteColleagueOne(Mediator mediator) {
    super(mediator);
    // TODO Auto-generated constructor stub
}

// 定义自己的方法
public void ownMethod() {
    // 自己的业务逻辑
}

// 定义依赖的方法
public void depMethod(){
    //自己的业务逻辑
    super.mediator.doSomethinThree();
}
}

public class ConcreteColleagueTwo extends Colleague {

  public ConcreteColleagueTwo(Mediator mediator) {
    super(mediator);
    // TODO Auto-generated constructor stub
  }

  // 定义自己的方法
  public void ownMethod() {
    // 自己的业务逻辑
  }

  // 定义依赖的方法
  public void depMethod() {
    // 自己的业务逻辑
    super.mediator.doSomethinFour();
  }

}
缺点:
最佳实践:
上一篇 下一篇

猜你喜欢

热点阅读