1

我有一个算法可以改变每一代对象的状态,这取决于对列表进行的一些半随机修改。我做了一个简化更清楚,所以假设我有两个类:

public class Archive{

...

}

public class Operation{

...

}

在另一个类中Algorithm,方法迭代,对 a 进行一些调整List<Operation>(类似于遗传算法的交叉和突变)。该列表与其他相关对象一起用于更新Archive对象,对对象进行大量计算和修改Archive

在我的代码的当前版本中,我有一个ArchiveUpdate具有内部Archive对象的类和一个接收更新中使用的所有对象以更改存档的方法。我认为这种方式有点模糊,我想不出另一种更好的方法,有人可以帮忙吗?

4

2 回答 2

1

很难完全掌握......但据我了解,您需要一种模式,如果“受监控”状态发生变化,您可以收到通知。如果是这种情况,您应该查看观察者模式,它提供了一种监视状态更改的简单方法。

于 2012-12-05T00:35:51.383 回答
1

您是否考虑过制作Archive不可变的方法并提供Archive基于现有存档返回新实例的方法?也就是说,类似:

public class Archive {
  private final String field;
  public Archive(String field) { this.field = field; }

  public Archive changeField(String newField) { return new Archive(newField); }
}

如果您的对象都是不可变的,那么推断它们的状态会容易得多,并且您不需要ArchiveUpdate类。但是,如果没有更多关于这些类是如何被使用的例子,我不能提出太多其他建议。

于 2012-12-05T00:33:32.643 回答