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

最佳答案

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

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


或使用二传手:

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


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

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

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


并由经济舱实施。然后向交易者注入IEconomy。这非常清楚地表明交易者应该使用经济的哪些部分。

07-25 23:18