java - 每次算法迭代更新对象的最佳模式

标签 java design-patterns

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

public class Archive{

...

}

public class Operation{

...

}

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

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

最佳答案

您是否考虑过使 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 类。然而,如果没有更多关于如何使用这些类的示例,我无法提出太多其他建议。

关于java - 每次算法迭代更新对象的最佳模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13714399/

相关文章:

java - 把一个长方形分成正方形

design-patterns - 这可能是什么设计模式?

ios - Objective-C 中的构建器模式

design-patterns - 哪种设计模式将决定做什么和做这件事分开?

java:传递一个对象并返回相同对象的类型

javascript - 模块模式中的私有(private)变量

java - 序列化 List<Object> 时未发现序列化程序错误

java - 了解 Java 执行器服务

java - 为什么像下面这样的一些方法需要访问修饰符 "static"?

java - @Cacheable 带有 null 键