オブジェクト指向設計


Flyweight パターン - プロキシパターン

2008/06/25 23:04Update
TAGS: Flyweightパターン | GoF | デザインパターン | OOD | オブジェクト指向設計

Flyweight パターンはGoFによる23種類のデザインパターンの構造に関連するパターンです。Flyweight パターンは、インスタンスを使いまわす(メモリ共有)ことで、インスタンスの生成コストを抑えます。

Page:  <1|2>

Flyweight パターンの概要


Flyweightは英語で「軽量級」との意味があります。Flyweight パターンは簡単に言えば、インスタンスを取得用のパターンで、生成したインスタンスを重複生成せず、使いまわすことで、メモリ量を節約します(軽量化)。

Flyweight パターンの使用シーン


◇ オブジェクトの生成コストが高い、生成コスト・使用するメモリ量を抑えるため。
◇ 生成したオブジェクトの状態が変化しない。もし変化する可能性がある場合、外部による状態の変化は他の影響を与えることになりかねません。

Flyweight パターンのクラス図


<<クラス図>>

Flyweight
生成しようとする目標インスタンスのクラス。
FlyweightFactory
インスタンスを取得するためのクラス。

FlyweightFactoryの実装方法:
取得時点でインスタンスが生成されていない場合
   1、Flyweightインスタンスを新たに生成する。
   2、生成したFlyweightインスタンスをプール(キャッシュ)する
   3、生成されたFlyweightインスタンスを返す。

既に生成されていた場合
   1、Flyweightインスタンスをプール(キャッシュ)から取出す
   2、対象のFlyweightインスタンスを返す。

上の処理で、インスタンスの生成は最初の一回だけで、FlyweightFactoryのインスタンスプールで最小限のインスタンスしか保持されていないので、生成コース・使用メモリ量を抑えることができます。

Flyweight パターンの使用例
Page:  <1|2>

有关作者
Syboos.jp編集長AJavaやオープンソース情報の執筆、Webサイトの開発や運営全般の業務に携わる。

Sponsored Link


Comments