TypeScript系列教程十一《装饰器》 -- 装饰器与继承

2022-05-06 17:18:26 浏览数 (1)

装饰器 并不是 TypeScript特有的,他是一种设计模式,对于这种设计模式和之前学过的继承、适配器、组合的模式有些类似,这里再盘点一下。

系列教程

  • TypeScript系列教程一《开篇》
  • TypeScript系列教程二《安装起步》
  • TypeScript系列教程三《基础类型》
  • TypeScript系列教程四《扩展类型》
  • TypeScript系列教程五《对象类型》》
  • TypeScript系列教程六《泛型》
  • TypeScript系列教程七《接口》
  • TypeScript系列教程八《类》
  • TypeScript系列教程九《高级类型》
  • TypeScript系列教程九《类型转换》-- keyof和typeof 操作
  • TypeScript系列教程九《类型转换》-- 索引访问类型
  • TypeScript系列教程九《类型转换》-- 条件类型
  • TypeScript系列教程九《类型转换》-- 映射类型
  • TypeScript系列教程九《类型转换》-- 条件类型
  • TypeScript系列教程九《类型转换》-- 模板文本类型
  • TypeScript系列教程十《模块》
  • TypeScript系列教程十一《装饰器》 – 装饰器与继承
  • TypeScript系列教程十一《装饰器》 – 类装饰器
  • TypeScript系列教程十一《装饰器》 – 方法装饰器
  • TypeScript系列教程十一《装饰器》 – reflect-metadata
  • TypeScript系列教程十一《装饰器》 – 属性装饰器
  • TypeScript系列教程十一《装饰器》 – 参数装饰器

装饰器模式的概念

装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其结构。这种类型的设计模式属于结构型模式,它是作为现有的类的一个包装。

这种模式创建了一个装饰类,用来包装原有的类,并在保持类方法签名完整性的前提下,提供了额外的功能。

TypeScript装饰器分类

TypeScript 的装饰器可以分为:

  • 类装饰器
  • 方法装饰器
  • 属性装饰器
  • 参数装饰器

装饰器应用场景

最常见的在web 服务里,看到的请求@post @get 等修饰函数,

还有经典的注入模式。

案例可以参考:Angular 中的依赖注入

装饰器模式和继承的区别

对于我们继承,我们很熟悉了,需要不需要的东西,子类继承了父类,父类一股脑的塞给你了。

所以后来提出来了组合大于继承的概念,装饰器我感觉像是组合的语法糖版本。

组合大于继承 = 装饰器大于继承,对于继承用不好是非常重的,控制不住往父类塞东西越来越多。

0 人点赞