package com.designepattern.mediatorpattern.v2;
import java.util.ArrayList;
import java.util.List;
/**
* @Author:glx
* @Date:2020/12/10
* @Content:
*/
public class MainDemo {
public static void main(String[] args) {
Person p1=new PersonImplA();
Person p2=new PersonImplB();
Mediator mediator=new MediatorImpl();
mediator.register(p1);
mediator.register(p2);
p2.send("是我P2發出的消息");
p1.send("是我P1發出的消息");
}
}
interface Mediator{
void register(Person person);//註冊
void relay(String msg);//分發
}
class MediatorImpl implements Mediator{
List<Person> personList=new ArrayList<>();
@Override
public void register(Person person) {
personList.add(person);
person.setMediator(this);
}
@Override
public void relay(String msg) {
for (int i = 0; i < personList.size(); i++) {
personList.get(i).receive(msg);
}
}
}
abstract class Person{
Mediator mediator;
abstract void receive(String msg);
abstract void send(String msg);
public Mediator getMediator() {
return mediator;
}
public void setMediator(Mediator mediator) {
this.mediator = mediator;
}
}
class PersonImplA extends Person{
@Override
void receive(String msg) {
System.out.println("PersonImplA--receive,msg:"+msg);
}
@Override
void send(String msg) {
this.mediator.relay(msg);
}
}
class PersonImplB extends Person{
@Override
void receive(String msg) {
System.out.println("PersonImplB--receive,msg:"+msg);
}
@Override
void send(String msg) {
this.mediator.relay(msg);
}
}