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的关系。   动态的扩展一个 实现类的功能。

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值