介绍

中介模式定义了一个单独的(中介) 对象,来封装一组对象之间的交互。将这组对象之间的交互委派给与中介对象交互,来避免对象之间的直接交互 —— 设计模式之美

简单的说就是,当对象之间的关系比较复杂,维护比较困难时,可以将维护关系的任务交与另一个类,将一对多,或者多对多的关系,转变为 一对一

实现

可以抽象为两个角色,一个是处理业务的,可以按照之间的关系,称为同事 Colleague;一个是处理同事之间关系的,叫做中介者,Mediator

Colleague

  1. package cn.zjm404.stu.dp.behavior.mediator;
  2. public abstract class AbstractColleague {
  3. protected AbstractMediator mediator;
  4. public void setMediator(AbstractMediator _mediator){
  5. this.mediator = _mediator;
  6. }
  7. }
  1. package cn.zjm404.stu.dp.behavior.mediator;
  2. public class ConcreteColleague1 extends AbstractColleague{
  3. //定义行为
  4. }
  1. package cn.zjm404.stu.dp.behavior.mediator;
  2. public class ConcreteColleague2 extends AbstractColleague{
  3. //定义行为
  4. }

Mediator

  1. package cn.zjm404.stu.dp.behavior.mediator;
  2. import lombok.Getter;
  3. import lombok.Setter;
  4. @Setter
  5. @Getter
  6. public abstract class AbstractMediator {
  7. protected ConcreteColleague1 c1;
  8. protected ConcreteColleague2 c2;
  9. public abstract void doSomething();
  10. }
  1. package cn.zjm404.stu.dp.behavior.mediator;
  2. public class ConcreteMediator1 extends AbstractMediator{
  3. @Override
  4. public void doSomething() {
  5. //管理同事类之间的关系,也可以当做门面模式来使用
  6. }
  7. }

参考