介绍
中介模式定义了一个单独的(中介) 对象,来封装一组对象之间的交互。将这组对象之间的交互委派给与中介对象交互,来避免对象之间的直接交互 —— 设计模式之美
简单的说就是,当对象之间的关系比较复杂,维护比较困难时,可以将维护关系的任务交与另一个类,将一对多,或者多对多的关系,转变为 一对一
实现
可以抽象为两个角色,一个是处理业务的,可以按照之间的关系,称为同事 Colleague;一个是处理同事之间关系的,叫做中介者,Mediator
Colleague
package cn.zjm404.stu.dp.behavior.mediator;public abstract class AbstractColleague {protected AbstractMediator mediator;public void setMediator(AbstractMediator _mediator){this.mediator = _mediator;}}
package cn.zjm404.stu.dp.behavior.mediator;public class ConcreteColleague1 extends AbstractColleague{//定义行为}
package cn.zjm404.stu.dp.behavior.mediator;public class ConcreteColleague2 extends AbstractColleague{//定义行为}
Mediator
package cn.zjm404.stu.dp.behavior.mediator;import lombok.Getter;import lombok.Setter;@Setter@Getterpublic abstract class AbstractMediator {protected ConcreteColleague1 c1;protected ConcreteColleague2 c2;public abstract void doSomething();}
package cn.zjm404.stu.dp.behavior.mediator;public class ConcreteMediator1 extends AbstractMediator{@Overridepublic void doSomething() {//管理同事类之间的关系,也可以当做门面模式来使用}}
