在以下A *算法here的代码中,我有2个函数setG
和calcF
,这样 -
setG
之前调用calcF
&安培;&安培; calcF
之后调用setG
醇>
换句话说,简单地在不调用setG
的情况下调用calcF
是不正确的。
此外,只是在不调用calcF
之前调用setG
是不正确的。
在calcF
之前调用setG
不正确。
如何为客户提供此规则?
存在类似问题here,但存在细微差别。这个问题在条件上更为严格。
答案 0 :(得分:4)
第一个想法是将这些函数合并为一个函数setGAndCalcF()
:
private void setG(int g);
private void calcF(T destination);
public void setGAndCalcF(int g, T destination) {
setG(g);
calcF(destination);
}
如果这不可行,您可以在setG()
和calcF()
中实施运行时检查(以及文档),这会产生异常(例如IllegalStateException
)。
答案 1 :(得分:1)
Markus的答案对我来说是正确的。如果你想知道设计模式,你应该使用管道:
public Holder setG(G g)
public void calcF(F f, Holder H)