我一直在用Java开发一个经济模拟器,遇到了一个障碍。我有一个经济舱,里面有一个贸易商向量。每次迭代,经济类都会调用每个Trader来更新()并决定它想要进行的交易。函数返回要添加到父经济类中的队列中的所需事务。我能够正确地实现上述所有,但我仍然需要每个交易者能够看到他目前有多少笔交易。由于交易存储在父级的经济类中,我应该如何设计代码,以便交易者能够访问经济函数和变量?
发布于 2009-04-05 21:08:29
因为Trader类需要访问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-05 20:44:34
public class Trader {
private Economy parent;
...
public Trader(Economy parent, ...) {
this.parent = parent;
}
}现在,贸易商应该有机会进入母国经济。
或者:
public onUpdate(Economy parent) { ... }如果你愿意。
发布于 2009-04-05 20:47:26
Trader类中的方法更新可以使用一个参数,即对Economy类的引用,您可以使用它传递这个引用。然后,经济可以提供所需的方法来提取所需的信息。
https://stackoverflow.com/questions/719646
复制相似问题