如何在两个公共职能之间建立强大的关系

时间:2014-01-11 08:28:47

标签: java design-patterns

在以下A *算法here的代码中,我有2个函数setGcalcF,这样 -

    必须在setG之前调用
  1. calcF &安培;&安培;
  2. 必须在calcF 之后调用
  3. setG 换句话说,简单地在不调用setG的情况下调用calcF是不正确的。 此外,只是在不调用calcF之前调用setG是不正确的。 在calcF之前调用setG不正确。

    如何为客户提供此规则?

    存在类似问题here,但存在细微差别。这个问题在条件上更为严格。

2 个答案:

答案 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)