这个问题更多的是装饰者是如何与设计模式和继承与组合相关的。
我在Python中看过装饰器,现在在AngularJS 2的Typescript中看到了它们。它们看起来像:
import {Component} from 'angular2/core'
@Component({
selector: 'courses',
template: `
<h2>These are the Courses</h2>
`
})
export class CoursesComponent {
// ...
}
并且装饰器看起来与指令非常相似。
据我所知,我们通常在过去使用继承来增加&#34;或&#34;扩展&#34;我们的班级,
class Dog < Animal # in Ruby
这称为白盒重复使用。作文是黑盒重复使用。
组件和指令的装饰器真的是黑盒重复使用吗?也就是说,吸收一个对象,并将其视为内部事物,并打开完全相同的界面,现在,无论收到什么消息,都要做一些额外的事情,然后将完全相同的消息传递给&#34;吸收的物体&#34;。
所以在上面的例子中,CoursesComponent
是装饰者并吸收Component
对象吗?在某种程度上,它也可以被认为是CoursesComponent
继承自Component
- 只是因为我们使用Decorator并且是一种形式的组合,因此是黑盒子重复使用,制作它比继承更清洁?
实际上,如果Component
将所有属性声明为私有,以便子类不能触及它们,并让我们的自定义组件继承自Component
,那么会有什么不同。它不像使用装饰器一样干净吗?