class Mediator {
operate(colleague, message){
throw new Error("This method must be overwritten!");
}
}
class ConcreteMediator extends Mediator {
constructor() {
super();
this.firstColleague = new FirstColleague(this),
this.secondColleague = new SecondColleague(this);
}
operate(colleague, message) {
if(colleague == this.firstColleague){
this.secondColleague.receive(message);
} else if(colleague == this.secondColleague) {
this.firstColleague.receive(message);
}
}
}
class AbstractColleague {
constructor(mediator) {
this._mediator = mediator;
}
send(message) {
throw new Error("This method must be overwritten!");
}
receive(message, sender) {
throw new Error("This method must be overwritten!");
}
}
class FirstColleague extends AbstractColleague{
constructor(mediator) {
super(mediator);
}
send(message){
this.mediator.operate(this, message);
}
receive(message){
console.log("First Colleague 收到消息:" + message);
}
}
class SecondColleague extends AbstractColleague {
constructor(mediator) {
super(mediator);
}
send(message) {
}
receive(message) {
console.log("Second Colleague 收到消息:" + message);
}
}
let mediator = new ConcreteMediator();
let firstColleague = new FirstColleague(mediator);
let secondColleague = new SecondColleague(mediator);
firstColleague.send("Hello World");
secondColleague.send("Word Count");
console