这可能不是最适合 stackoverflow 的问题,但我只是在寻找一个最能描述为什么程序员有时不使用属性的 setter/getter 的答案,例如在属性注入(inject)(DI)的情况下。
考虑这个例子...
class Test
{
public propertyA;
protected propertyB;
public function setPropertyB(val)
{
// do some logic to validate 'val'
this.propertyB = val;
}
public function getPropertyB()
{
return this.propertyB;
}
}
为什么会选择直接设置propertyA
的风格:
var Test = new Test();
Test.propertyA = 1;
通过 propertyB
的 setter 选项:
var Test = new Test();
Test.setPropertyB(1);
我总是使用 setter/getter 方法,但我看到一些相当成熟的框架使用 propertyA
方法散布于 propertyB
方法。使用这种方法有什么好处?
最佳答案
为什么你可能不关心封装:
您可能会在 15 分钟后丢弃该项目。
您可能发现 getter/setter 是 CPU 密集型代码的瓶颈,导致您优化性能而不是设计。
实例字段可能是不可变且只读的,因此公开它可能不会有危险。
你懒得写 getter/setter。
关于oop - 什么时候不使用 setter 直接在对象上设置属性值被认为是好的设计?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8922745/