0

我一直在用 Java 开发经济模拟器,但遇到了障碍。我有一个拥有Traders向量的经济舱。每次迭代,Economy 类都会调用每个Trader来 update() 并决定它想要进行哪些交易。update() 函数返回要添加到父经济舱队列中的所需交易。我能够正确实现上述所有内容,但我仍然需要每个交易者能够看到他目前有多少笔交易。由于交易存储在父经济舱中,我应该如何设计代码以便交易者可以访问经济舱函数和变量?

4

3 回答 3

3

由于 Trader 类需要访问 Economy 类的方法,因此正确的方法是将 Economy 的实例“注入”到 Trader 类。您可以使用构造函数来做到这一点:

public Trader(Economy economy) {
    this.economy = economy;
}

或使用二传手:

public void setEconomy(Economy economy) {
        this.economy = economy;
    }

但是要小心正确设计经济舱。对经济舱变量的访问应仅限于该类的方法。如果要从外部访问它们,请定义 getter 和 setter。据我了解,交易者应该只从经济中提取信息。他们不应该能够调用修改经济状态的方法。这应该反映在您的设计中。

你也可以考虑定义一个接口:

interface IEconomy {
  List<Trade> getTrades(Trader trader);
}

并由经济舱实施。然后向 Trader 注入一个 IEconomy。这使得交易者应该使用经济的哪些部分非常明显。

于 2009-04-05T21:08:29.247 回答
1
public class Trader {
    private Economy parent;
    ...
    public Trader(Economy parent, ...) {
        this.parent = parent;
    }
}

现在 Trader 应该可以访问父经济体。

或者:

public onUpdate(Economy parent) { ... }

如果你希望。

于 2009-04-05T20:44:34.920 回答
1

Trader类中的方法update可能带有一个参数,即对经济类的引用,您可以使用this传递它。然后,Economy可以提供提取所需信息所需的方法。

于 2009-04-05T20:47:26.643 回答