//中介者 调停者 模式
interface mediatorInterface {
selfMethod():void; //用户的自发行为
depMethod():void; //依赖行为。用户要通过这个方法做事情。
}
//用户
class AAA {
private mediator:Mediator = null ;
public constructor(mediator:Mediator) {
this.mediator = mediator;
YBLog.log("beProxy", " 用户A ");
}
public dodoA(): void {
YBLog.log("beProxy", " 用户A dodoA ");
this.mediator.depMethod();
}
}
//用户
class BBB {
private mediator:Mediator = null ;
public constructor(mediator:Mediator) {
this.mediator = mediator;
YBLog.log("beProxy", " 用户B ");
}
public dodoB(): void {
YBLog.log("BBB", " 用户B dodoB ");
this.mediator.depMethod();
}
}
class Mediator implements mediatorInterface
{
private _a: AAA = null;
public getA(): AAA {
return this._a;
}
public setA(value: AAA) {
this._a = value;
}
private _b: BBB = null;
public getB(): BBB {
return this._b;
}
public setB(value: BBB) {
this._b = value;
}
public constructor()
{
}
public selfMethod( )
{
YBLog.log("Mediator", " 中介者让用户做什么 ");
this._b.dodoB();
this._a.dodoA();
}
//用户的自发行为
public depMethod() //依赖行为。用户要通过这个方法做事情。
{
YBLog.log("Mediator", " 用户让中介者做什么 ");
}
}
let mediator:Mediator = new Mediator();
let a = new AAA(mediator);
let b = new BBB(mediator);
mediator.setA(a);
mediator.setB(b);
mediator.selfMethod();
一优点:减少了依赖,变成一对一的了,减少耦合。
二缺点:这个类会膨胀,逻辑会复杂。