我的同事告诉我,getter和setter中的逻辑应该尽可能少。
但是,我深信可以在getter和setter中隐藏很多东西,以使用户/程序员免受实现细节的影响。
我做的一个例子:
public List<Stuff> getStuff()
{
if (stuff == null || cacheInvalid())
{
stuff = getStuffFromDatabase();
}
return stuff;
}
工作告诉我做事的一个例子(他们引述Bob叔叔的“干净代码”):
public List<Stuff> getStuff()
{
return stuff;
}
public void loadStuff()
{
stuff = getStuffFromDatabase();
}
设置器/获取器中适合多少逻辑?空的getter和setter的用途是什么,除了违反数据隐藏之外?
public List<Stuff> getStuff() { return stuff; }
StuffGetter
接口,实现一个StuffComputer
进行计算的接口,并将其包装在的对象中StuffCacher
,该对象负责访问缓存或将调用转发给StuffComputer
它包装的。