1

リストに加えられた半ランダムな変更に応じて、世代ごとにオブジェクトの状態を変更するアルゴリズムがあります。わかりやすくするために単純化したので、2 つのクラスがあるとします。

public class Archive{

...

}

public class Operation{

...

}

別のクラス ではAlgorithm、メソッドが反復し、List<Operation>(遺伝的アルゴリズムのクロスオーバーと突然変異と同様に) にいくつかの調整を行います。このリストは、関連する他のオブジェクトとともに、オブジェクトを更新するために使用され、Archiveオブジェクトに多くの計算と変更を加えArchiveます。

私のコードの現在のバージョンにArchiveUpdateは、内部Archiveオブジェクトを持つクラスと、アーカイブを変更するために更新で使用されるすべてのオブジェクトを受け取るメソッドがあります。この方法はちょっとあいまいだと思います。これをよりうまく行う別の方法は考えられません。誰か助けてもらえますか?

4

2 に答える 2

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 に答える
1

完全に把握するのは難しいです...しかし、私が理解したことから、「監視された」状態が変化した場合に通知できるようにするパターンが必要です。その場合は、Observer パターンを確認する必要があります。これは、状態の変化を監視する簡単な方法を提供します。

于 2012-12-05T00:35:51.383 に答える