1

1,000 を超える属性を含む理論上のファクトリ クラスを考えてみましょう (たとえば、MVC プロジェクトのモデル)。

ファクトリ パターンは、(ゲームのようなプロジェクトで) 選択されたレベルで機能するシナリオのスナップショットを表示します。ファクトリは、必要なコンポーネントとモデルをシナリオに渡す必要があります。

モデルとコンポーネントはどのシナリオでも再利用できますが、すべてのシナリオは 1 回しか初期化できません (2 つのシナリオで取引を行うことは不可能です)。

だから、私の質問は:

すべてのコンポーネントが必要ないことを考えると、何千もの属性を初期化する必要はありません (遅すぎるため)。必要な場合にのみ、コンポーネントをインスタンス化してシナリオに渡すにはどうすればよいですか?

オブジェクトは再利用でき、コピー/貼り付けを避けたいため、ファクトリごとに何千ものファクトリを作成したくなく(抽象ファクトリ パターン)、ファクトリ自体でオブジェクトを初期化したくありません。

Javaでオブジェクトをオンデマンドで初期化する方法はありますか?

「属性が1000個あるとまずい」という回答は頂きたくありません、全て知っていますが、古いシステムを扱う必要があり、メモリ使用量を減らしたいです。

4

3 に答える 3

1

遅延初期化を検討することをお勧めします

于 2012-06-19T21:08:33.687 に答える
1

何も組み込まれていません。

AOP を使用していくつかの遅延初期化トリックを実行しました。たとえば、プロパティが初めて参照されるとすぐに初期化を実行します。これは、必要に応じて、すべてのオブジェクトのプロパティ、任意のサブセットなどに対して、長時間実行される初期化に対してのみ実行できます。

これは AOP で行う必要はありません。通常の Java コードを介して行うことができますが、Java コードが既に記述されている場合、制御外のジェネレーターから来ている場合などは、問題になる可能性があります。

于 2012-06-19T21:08:39.210 に答える
1

1 つのオプションは、ビルダー パターンを介してファクトリを公開することです。

次に、それぞれが特定のシナリオの基礎となるファクトリを初期化する方法を「知っている」多数の ScenarioBuilders を持つことができます。

于 2012-06-19T21:09:17.780 に答える