English 中文(简体)
Java中需要访问父函数的棘手情况
原标题:
  • 时间:2009-04-05 20:40:21
  •  标签:

我一直在用Java开发一个经济模拟器,结果遇到了一个障碍。我有一个经济类,它拥有交易员的向量。每次迭代,Economy类都会调用每个Trader来更新(),并决定要进行哪些交易。update()函数返回要添加到父Economy类中的队列中的所需事务。我能够正确地执行上述所有操作,但我仍然需要每个交易者来查看他目前有多少交易。由于交易存储在父级Economy类中,我应该如何设计代码,使Traders能够访问Economic函数和变量?

最佳回答

由于Trader类需要访问Economy类的方法,正确的方法是将Economy的实例“注入”到Trader类中。您可以使用构造函数执行此操作:

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

或者用一个设定器:

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

然而,要小心设计经济舱。对Economy类的变量的访问应仅限于该类的方法。如果您想从外部访问getter和setter,请定义它们。据我所知,交易员应该只从一个经济体中提取信息。他们不应该能够调用修改经济状态的方法。这应该反映在你的设计中。

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

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

并由经济舱执行。然后向交易者注入IEeconomy。这就很明显地说明了交易者应该使用经济的哪些部分。

问题回答
public class Trader {
    private Economy parent;
    ...
    public Trader(Economy parent, ...) {
        this.parent = parent;
    }
}

现在Trader应该可以访问母公司经济。

或者:

public onUpdate(Economy parent) { ... }

如果你愿意的话。

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





相关问题
热门标签