TypeScript中介者调停者

//中介者 调停者 模式

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();

一优点:减少了依赖,变成一对一的了,减少耦合。 

二缺点:这个类会膨胀,逻辑会复杂。

猜你喜欢

转载自blog.csdn.net/ting100/article/details/108636053