• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

16-TypeScript装饰器模式

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

在客户端脚本中,有一个类通常有一个方法需要执行一些操作,当我们需要扩展新功能,增加一些操作代码时,通常需要修改类中方法的代码,这种方式违背了开闭的原则。

装饰器模式可以动态的给类增加一些额外的职责。基本实现思路是:定义一个装饰类,这个装饰类来装饰新的功能,将新的功能代码移植到继承装饰类的子类中,而这个子类先

调用装饰类的方法,紧接着实现自己的新功能,最后在客户端去显示装饰要调用哪些功能。代码如下:

interface IPeople{
   do():void;
}
class People implements IPeople{
    public  do():void{
         console.log("Eat");
    }
}

class DecoratorPeople {
    protected people:IPeople;
    public SetPeople(ipeople:IPeople):void{
        this.people=ipeople;
    }
    public do():void{
        if(this.people){
            this.people.do();
        }
    }
}

class ProgrammerPeople extends DecoratorPeople {
    public do():void{
        super.do();
        console.log("Coding");
    }
}

class TesterPeople extends DecoratorPeople{
    public do():void{
        super.do();
        console.log("Testing");
    }
}

var p=new People();
var pp=new ProgrammerPeople();
var tp=new TesterPeople();
pp.SetPeople(p);
tp.SetPeople(pp);
tp.do();

解释:

People中的方法是原始的一个基础实现,ProgrammerPeople与TestPeople两个从装饰类继承的子类是后期新功能的实现。

在pp对象SetPeople(p)时,就将p传入了装饰类,tp对象SetPeople(pp)时,就将pp传入了装饰类,最后在调用tp.do方法时,就要逐级先执行上级传入的对象

的do方法,从而实现了功能的扩展。

欢迎加入QQ群讨论:573336726


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
TypeScript学习(十三)常见问题发布时间:2022-07-18
下一篇:
蒲公英 · JELLY技术周刊 Vol.10 为什么你还不使用 TypeScript发布时间:2022-07-18
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap