TypeScript装饰者模式

//装饰者模式

//组件 抽象类

abstract class Component {

    public abstract operator(): void;

}

//具体的构件

class componentObj extends Component {

    operator() {

        YBLog.log("Test", "具体的构件  我做事了");

    }

}

//抽象装饰

abstract class Decorator extends Component {

    private component: Component = null;

    constructor(component: Component)

    {

        super();

        this.component = component; 

    }

    operator() {

       this.component.operator();

    }

}

//具体的装饰

class aaa extends Decorator {

    private  doa():void

    {

       YBLog.log( "Test","修饰类 修饰之后");   

    }

    operator()

    {

        super.operator();

        this.doa();

    }

}

let cobj :Component = new componentObj();

cobj = new  aaa(cobj);  //装饰了之后

cobj.operator();

// Test 具体的构件  我做事了

// Test 修饰类 修饰之后

一优点: Decorator 随意扩展,不会耦合。  装饰模式是继承关系的替代方案,不管装饰多多少层 ,返回的还是  component ,   is-a的关系。   动态的扩展一个 实现类的功能。

二缺点:多层装饰比较复杂点

猜你喜欢

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