Flyweight パターン - プロキシパターン
2008/06/25 23:04Update
Flyweight パターンはGoFによる23種類のデザインパターンの構造に関連するパターンです。Flyweight パターンは、インスタンスを使いまわす(メモリ共有)ことで、インスタンスの生成コストを抑えます。
Flyweight パターンの概要
Flyweightは英語で「軽量級」との意味があります。Flyweight パターンは簡単に言えば、インスタンスを取得用のパターンで、生成したインスタンスを重複生成せず、使いまわすことで、メモリ量を節約します(軽量化)。
Flyweight パターンの使用シーン
◇ オブジェクトの生成コストが高い、生成コスト・使用するメモリ量を抑えるため。
◇ 生成したオブジェクトの状態が変化しない。もし変化する可能性がある場合、外部による状態の変化は他の影響を与えることになりかねません。
Flyweight パターンのクラス図
<<クラス図>>
Flyweight
生成しようとする目標インスタンスのクラス。
FlyweightFactory
インスタンスを取得するためのクラス。
FlyweightFactoryの実装方法:
取得時点でインスタンスが生成されていない場合
1、Flyweightインスタンスを新たに生成する。
2、生成したFlyweightインスタンスをプール(キャッシュ)する
3、生成されたFlyweightインスタンスを返す。
既に生成されていた場合
1、Flyweightインスタンスをプール(キャッシュ)から取出す
2、対象のFlyweightインスタンスを返す。
上の処理で、インスタンスの生成は最初の一回だけで、FlyweightFactoryのインスタンスプールで最小限のインスタンスしか保持されていないので、生成コース・使用メモリ量を抑えることができます。
Flyweight パターンの使用例
Sponsored Link
- Relative Articles
- ASP.NETでのフロント・コントローラ(Front Controller)実装 - (2009/10/20 15:22)
- Factory Method パターン - ファクトリメソッドパターン - (2008/06/09 22:44)
- Abstract Factory パターン - 抽象ファクトリパターン - (2008/06/10 13:25)
- Singleton パターン - シングルトンパターン - (2008/06/10 15:36)
- Prototypeパターン - プロトタイプパターン - (2008/06/10 17:23)
- Builderパターン - ビルダーパターン - (2008/06/10 19:01)
- Adapter パターン - アダプターパターン - (2008/06/11 11:30)
- Composite パターン - コンポジットパターン - (2008/06/11 16:59)
- Interpreter パターン - インタプリタパターン - (2008/06/13 15:42)
- Chain of Responsibility パターン - 責任の連鎖パターン - (2008/06/14 00:28)