Objects Bee のマトリックス (二次元配列) があります。flyweight パターンを適用したいのですが、どのように適用すればよいですか? 巨大なサイズでマトリックスを直接インスタンス化すると、メモリの割り当てが多すぎます。パターンを適用する効率的な方法はありますか?
パターンが Bee オブジェクトに適用できることは確認済みですが、行列のメモリが気になります。PD私はJavaを使用しています。
Objects Bee のマトリックス (二次元配列) があります。flyweight パターンを適用したいのですが、どのように適用すればよいですか? 巨大なサイズでマトリックスを直接インスタンス化すると、メモリの割り当てが多すぎます。パターンを適用する効率的な方法はありますか?
パターンが Bee オブジェクトに適用できることは確認済みですが、行列のメモリが気になります。PD私はJavaを使用しています。
これはウィキペディアからそのまま
「フライウェイトはソフトウェア設計パターンです。フライウェイトは、他の同様のオブジェクトとできるだけ多くのデータを共有することにより、メモリの使用を最小限に抑えるオブジェクトです。単純な繰り返し表現では許容できない量のデータを使用する場合に、オブジェクトを大量に使用する方法です。メモリー。"
表現が繰り返される場合は、パターンがオブジェクトの再利用を示唆していることを確認してください。したがって、最初に、マトリックス内のいくつの Bee オブジェクトが重複オブジェクトを持っている可能性があるかを確認する必要があります。したがって、メモリ内に新しいオブジェクトを作成する代わりに、最初のオブジェクトを一致させて再利用します。
すでに作成されたオブジェクトのプール内を参照する Factory を作成します。一致するものが見つかった場合、プールからオブジェクトが返され、そうでない場合はメモリ内に新しいオブジェクトが作成されて返されます。
メモリを節約する方法は他にもあるかもしれませんが、その場合は完全なコードを確認する必要があります。