1 回答

TA贡献1848条经验 获得超6个赞
通过这种方式,您可以强制扩展抽象 A 的类的实现者定义自己的不变量。
abstract class A {
public void doSth(){
Invariant invariant = getInvariant();
check(invariant);
//do some work
check(invariant);
}
//define your invariant in concrete impl
protected abstract Invariant getInvariant();
}
我再次重新阅读了您的问题,但我仍然不确定。或者你想在抽象类中定义不变量并在具体实现中检查它?
abstract class A {
private void checkInvariant(){
//check state
//if state is breaking invariant throw exception
}
public void doSth() {
checkInvariant();
doActualWork();
checkInvariant();
}
protected abstract void doActualWork();
}
添加回答
举报