
604
14
章
Flyweight
パターン
Flyweight
パターン
クラスの1つのインスタンスを使って多数の「仮想インスタンス」を提
供できる場合には、Flyweightパターンを使いましょう。
シナリオ
新しい景観設計アプリケーションで、木をオブジェクトとして加えたいとします。こ
のアプリケーションでは、木には
X-Y
座標の位置があり、樹齢に応じて動的に描写され
ますが、実際にはあまり機能しません。しかし、ユーザは自分の家の景観設計の一部と
して数多くの木を配置したいと考えるかもしれません。以下の図のようなものです。
大口顧客のジレンマ
これまで何ヶ月も売り込みをかけてきた重要な顧客がいま
す。この顧客はあなたのアプリケーションを
1,000
セット購入
する予定で、そのソフトウェアを使って計画中の広大なコミュ
ニティ用の景観設計を行おうとしています。あなたのソフト
ウェアを
1
週間ほど使ってみたところ、この顧客は広大な林を
作ろうとするとアプリケーションが重くなると不満を漏らし
ています。
木
木
木
木
木
木
木
家
Tree
インスタンスは自身の
状態を保持します。
Tree
xCoord
yCoord
age
display() {
// X-Y
座標と複雑な
//
樹齢関連の
//
計算を使う
}