【问题标题】:Is the Typescript @Component "Decorator" related to the decorator pattern?Typescript @Component“装饰器”与装饰器模式有关吗?
【发布时间】:2019-02-23 19:47:47
【问题描述】:

组件 .ts 文件中的@Component({}) 行称为装饰器。这与装饰器模式有关,还是它们无关?

【问题讨论】:

标签: angular typescript decorator angular-decorator typescript-decorator


【解决方案1】:

它们是相关的,因为您使用附加功能装饰现有类。它们不一样,因为 typescript @Decorator 是在编译时应用的,而装饰器模式也可以用于在运行时装饰类,例如:

let armoredenemy = new Armored(new Enemy())
let enemy = new Enemy()

程序运行时,您仍然可以决定是否要装饰班级。

【讨论】:

    【解决方案2】:

    打字稿装饰器:

    现在是编译时间。这是一次但永久的变化,因为被装饰的班级与原来的班级不同。而且很简单,基本上就是一个函数。

    常见的场景是一个装饰器应用于不同的类。例如:在 Angular 中,@injector 装饰器适用于各种类并使它们可注入。

    对于一般的装饰器模式:

    常见的场景是在一个类上使用不同的装饰器。这是相当繁重的。您需要创建装饰器类,装饰器类和原始类的公共父类,以及不同的子装饰器类。原始类保持不变,您可以在运行时根据需要应用装饰器。

    例如:你有一个咖啡课。您可以根据需要创建不同的装饰器类:Espresso、Cappuccino,甚至 expresso + Cappuccino 咖啡。

    只要我的 2 美分。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-05-07
      • 1970-01-01
      • 1970-01-01
      • 2012-01-09
      • 2018-01-19
      • 1970-01-01
      • 2011-01-16
      相关资源
      最近更新 更多