程序到接口 - 如何有效地访问调用类?

时间:2013-03-09 15:15:18

标签: java oop interface reference

我正在创建一个遗传算法框架,我有一个包含TournamentEvolutionStrategy对象的人口类,这样我就可以插入不同的锦标赛类型和进化策略。

目前我已设置它,以便通过从人口传入EvolutionStrategy对象来创建新的Population对象 -

EvolutionStrategy strategy = new BasicStrategy(this);

BasicStrategy构造函数中我有

Population pop;
public BasicStrategy(Population pop)
{
    this.pop = pop;
}

我对此有两个问题

1)这是否会创建正确的引用变量,允许在EvolutionStrategy中立即访问对群体的更新,还是应该使用某种形式的同步?

2)有更好的方法吗?在Population中为策略提供参考变量,在Strategy中为人口提供参考变量,这对我来说似乎很浪费。

1 个答案:

答案 0 :(得分:2)

  1. 很好
  2. 我认为您应该有一个额外的类,例如 EvolutionAlgorithm ,您可以在其中存储 Population (根据正在发展的对象)和 EvolutionStrategy 分开。当你想要进化你的人口时,你只需要将群体作为参数调用evolutionStrategy的方法(策略模式)。我认为evolutionStartegy不需要存储人口。在没有evolutionStrategy的情况下,人口也可以有意义。