首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java中需要访问父函数的棘手情况

Java中需要访问父函数的棘手情况
EN

Stack Overflow用户
提问于 2009-04-05 20:40:21
回答 3查看 601关注 0票数 0

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

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-04-05 21:08:29

因为Trader类需要访问Economy类的方法,所以正确的方法是向Trader类“注入”一个经济实例。您可以使用构造函数来做到这一点:

代码语言:javascript
复制
public Trader(Economy economy) {
    this.economy = economy;
}

或者和一个策划人:

代码语言:javascript
复制
public void setEconomy(Economy economy) {
        this.economy = economy;
    }

不过,要小心,合理设计经济舱。对经济类变量的访问应仅限于该类的方法。如果希望外部访问getter和setter,请定义它们。据我所知,交易员只应从经济中提取信息。他们不应该调用修改经济状况的方法。这应该反映在你的设计上。

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

代码语言:javascript
复制
interface IEconomy {
  List<Trade> getTrades(Trader trader);
}

并按经济舱实施。然后向Trader注入一个IEconomy。这就很明显,一个交易者应该使用经济中的哪些部分。

票数 3
EN

Stack Overflow用户

发布于 2009-04-05 20:44:34

代码语言:javascript
复制
public class Trader {
    private Economy parent;
    ...
    public Trader(Economy parent, ...) {
        this.parent = parent;
    }
}

现在,贸易商应该有机会进入母国经济。

或者:

代码语言:javascript
复制
public onUpdate(Economy parent) { ... }

如果你愿意。

票数 1
EN

Stack Overflow用户

发布于 2009-04-05 20:47:26

Trader类中的方法更新可以使用一个参数,即对Economy类的引用,您可以使用它传递这个引用。然后,经济可以提供所需的方法来提取所需的信息。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/719646

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档