我想知道好的合同在哪里结束,偏执狂开始了.真的,我只是不知道开发人员应该关心什么,他应该忘记什么:)
假设我有一个包含值的类,比如java.lang.Integer.它的实例由其他对象(MappedObjects)(一对多或多对多)聚合,并且经常在MappedObjects的方法中使用.出于性能原因,我还在TreeMap中跟踪这些关系(guava MultiMap,无所谓),以便能够快速迭代绑定到某些Integer键范围的MappedObjects.因此,为了使系统保持一致状态,我应该修改MappedObject.bind(整数整数)方法来更新我的Map,如:
class MappedObject {
public void bind (Integer integer) {
MegaMap.getInstance().remove(fInteger, this);
fInteger = integer;
MegaMap.getInstance().add(fInteger, this);
}
...
private Integer fInteger;
}
Run Code Online (Sandbox Code Playgroud)
我可以使用这个最终方法制作抽象的MappedObject类,强制其他人继承它,但它很粗鲁.如果我将MappedObject定义为具有方法bind()的接口并提供骨架实现 - 其他开发人员可能稍后忘记将其包含在对象中并自己实现方法而不进行Map更新.