package com.leitao.demo.design;
/**
* 中介者模式
* @Description: TODO
* @Author LeiTao
* @Date 2023/5/3
* @Version V1.0
**/
public class MediatorPattern {
public static void main(String[] args) {
ConcreteMediator concreteMediator = new ConcreteMediator(); //中介者
Colleague1 colleague1 = new Colleague1(concreteMediator);
Colleague2 colleague2 = new Colleague2(concreteMediator);
concreteMediator.setColleague1(colleague1);
concreteMediator.setColleague2(colleague2);
colleague1.sendMessage("你是谁啊?");
colleague2.sendMessage("我是你爹");
}
}
abstract class Colleague{
protected Mediator mediator;
}
class Colleague1 extends Colleague {
public Colleague1(Mediator mediator) {
this.mediator = mediator;
}
public void sendMessage(String message){
mediator.sendMessage(message,this);
}
public void receiveMessage(String message){
System.out.println("同事1收到消息为:" + message);
}
}
class Colleague2 extends Colleague {
public Colleague2(Mediator mediator) {
this.mediator = mediator;
}
public void sendMessage(String message){
mediator.sendMessage(message,this);
}
public void receiveMessage(String message){
System.out.println("同事2收到消息为:" + message);
}
}
abstract class Mediator{
public abstract void sendMessage(String message,Colleague colleague);
}
class ConcreteMediator extends Mediator{
private Colleague1 colleague1;
private Colleague2 colleague2;
public void setColleague1(Colleague1 colleague1) {
this.colleague1 = colleague1;
}
public void setColleague2(Colleague2 colleague2) {
this.colleague2 = colleague2;
}
@Override
public void sendMessage(String message, Colleague colleague) {
if (colleague == colleague1){
//让同事2收到消息
colleague2.receiveMessage(message);
}else {
colleague1.receiveMessage(message);
}
}
}