Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular 是Typescript@Component";“装饰师”;与装饰图案有关?_Angular_Typescript_Decorator_Angular Decorator_Typescript Decorator - Fatal编程技术网

Angular 是Typescript@Component";“装饰师”;与装饰图案有关?

Angular 是Typescript@Component";“装饰师”;与装饰图案有关?,angular,typescript,decorator,angular-decorator,typescript-decorator,Angular,Typescript,Decorator,Angular Decorator,Typescript Decorator,Component.ts文件中的@Component({})行称为装饰器。这与Decorator模式有关,还是不相关?它们是相关的,因为您使用附加功能装饰现有类。它们不一样,因为typescript@Decorator是在编译时应用的,而Decorator模式也可以用于在运行时修饰类,例如: let armoredenemy = new Armored(new Enemy()) let enemy = new Enemy() 当程序运行时,您仍然可以决定是否要装饰类 类型脚本装饰器: 现在是编

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

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

let armoredenemy = new Armored(new Enemy())
let enemy = new Enemy()
当程序运行时,您仍然可以决定是否要装饰类

类型脚本装饰器:

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

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

对于常规装饰图案:

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

你有一堂咖啡课。您可以创建不同的装饰类:意式浓缩咖啡、卡布奇诺咖啡,如果需要,甚至是expresso+卡布奇诺咖啡

只要我的2美分