中介者模式Mediator 封装交互

用一个中介对象来封装一系列的对象交互。中介者使得各对象不需要显示地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。
public interface Mediator {
  public void changed(Colleague colleague);
}

public abstract class Colleague {
  private Mediator mediator;
  public Colleague(Mediator mediator) {
    this.mediator = mediator;
  }
  public Mediator getMediator() {
    return mediator;
  }
}

public class ConcreteColleagueA extends Colleague {
  public ConcreteColleagueA(Mediator mediator) {
    super(mediator);
  }
  public void someOperation() {
    getMediator.changed(this);
  }
}

public class ConcreteColleagueB extends Colleague {
  public ConcreteColleagueB(Mediator mediator) {
    super(mediator);
  }
  public void someOperation() {
    getMediator.changed(this);
  }
}

public class ConcreteMediator implements Mediator {
  private ConcreteColleagueA colleagueA;
  private ConcreteColleagueB colleagueB;

  public void setConcreteColleagueA(ConcreteColleagueA colleagueA) {
    this.colleagueA = colleagueA;
  }
  public void setConcreteColleagueB(ConcreteColleagueB colleagueB) {
    this.colleagueB = colleagueB;
  }
  public void changed(Colleague colleague) {
   
  }
}

要使用中介者模式来实现,就要区分出同事对象和中介者对象。主板是作为中介者,而光驱、CPU、声卡、显卡等配件,都是作为同事对象。

同事关系:在标准的中介者模式中,将使用中介者对象来交互的那些对象称为同事类。
同事和中介者的关系:在中介者模式中,当一个同事对象发生了改变,需要主动通知中介者,让中介者去处理与其他同事对象相关的交互。

优点:多对多变一对多

你可能感兴趣的:(设计模式)