8

これはその定義です:

共有を使用して、多数のきめ細かいオブジェクトを効率的にサポートします。

しかし、それが何を意味するのか正確にはわかりません。

小さなデモで詳しく説明できますか?

4

1 に答える 1

12

Flyweight パターンは、特定の型のインスタンスが多数必要な場合に便利です。これらすべてのインスタンス (本質的な状態) で同じデータを共有オブジェクトに分離します。インスタンス自体でインスタンスごとに異なるデータのみを保持します (外部状態)。利点は、明らかにメモリ消費量が少ないことです。

これはゲーム業界ではよくあるパターンで、通常の例は戦場の兵士です。すべての兵士は同じグラフィック表示と同じ武器を共有していますが、位置と健康状態は異なります。外部状態は、戦場でのヘルスと x/y/z 座標のみになり、他のすべては Flyweight になります。

このパターンの PHP 実装は、Web 上で簡単に見つけることができます。例えば

于 2010-02-23T07:51:43.810 に答える