我在一些遗留代码中发现了以下内容:
public class MyClass
{
private boolean myBool;
public boolean getMyBool()
{
return myBool;
}
public void otherMethod()
{
// some other calculations
boolean something = this.getMyBool();
// some other calculations
}
}
我是不是漏掉了什么?使用getMyBool()
而不仅仅是直接调用myBool
有什么好处吗?
因为在我看来,如果getMyBool()
的行为发生了变化,那么这个类在调用这个方法时就会背叛自己。
发布于 2015-07-28 06:45:10
其他类可能继承此类,并使用另一个实现覆盖getMyBool()
。
另一个用例是当您想用方面来测试代码时。用于更改getter行为或记录getter调用.
发布于 2015-07-28 06:42:07
这不是背叛。如果您使用这个类,并且在类之外使用getter/setter,那么更改功能也不是背叛。
想象一下阶级的人。这类具有年龄,您希望将小于零的值设置为零。您只需将setter和/或getter更改为适当的行为。
你真的不想把它从零下改为零下,“有时”。这是原因,您应该在类中调用setter/getter。
发布于 2015-07-28 06:43:11
如果getMyBool
是一个纯getter,也就是说,它只检索字段,那么对它进行方法调用就没有什么价值了。吸气器和领域之间的行为没有变化。
如果它不是经常发生的纯getter,那么方法调用是可以接受的。仅仅使用getter并不能封装程序的全部意图。
https://stackoverflow.com/questions/31679478
复制相似问题