我了解OOP中封装的重要性,而访问器(获取器/设置器)提供了这种抽象级别。
但是,使用Typescript,我可以在以后用访问者替换我的属性,并使用相同的名称,然后将我的属性重命名为带下划线的前缀(因此不会造成重大更改)。
例如,我可以拥有:
class foo {
name: string;
}
稍后,如果我希望向该属性添加访问器,则可以更改为以下内容:
class foo {
private _name: string;
get name():boolean {
return this._name;
}
set name(name: string) {
this._name = name;
}
}
这被认为是不好的做法吗?
在这种情况下访问器的目的是什么?
答案 0 :(得分:4)
访问器是实现的详细信息。如果您遵循“ program to the interface, not to the implementaion”规则,则foo
的用户只能看到
interface foo {
name: string;
}
该接口的实现方式无关紧要。可能是带有getter和setter的类,带有公共属性的类,甚至是纯对象。
哪个最佳,取决于特定实现必须遵守的约束。在大多数情况下,访问器似乎不是必需的,但有时可能很方便。