コース: C#:デザインパターン

無料トライアルでこのコースを視聴する

今すぐ登録して、25,300件以上登録されている、業界エキスパート指導のコースを受講しましょう。

FlyweightをC#で実装する

FlyweightをC#で実装する - C#のチュートリアル

コース: C#:デザインパターン

FlyweightをC#で実装する

Flyweight パターンを利用すると、 同じインスタンスを 複数生成するような場合に、 インスタンスを共有化することで、 そのインスタンスの生成数を 減らすことができます。 画面は、Flyweight パターンの サンプルプログラムを クラス図で表した画面です。 FlyweightFactory クラスで FlyweightChar という クラスを生成します。 このクラスは、文字の一文字を表します。 Char 型のフィールドに、 表す文字を持ちます。 このクラスは、インスタンスの生成に 非常にコストがかかる クラスだと思って下さい。 その場合に、このクラスの インスタンスの生成を なるべく減らす必要があります。 それではこのインスタンスを 作成する、Factory クラスを 確認してみましょう。 FryweightFactory では、 Dictionary を利用して、 生成したインスタンスを保持し、 それを返します。 例えば、インスタンスに ある文字が含まれていれば、 Dictionary から、 その文字を利用します。 含まれていない場合に、 新しくインスタンスを new を使って作成していることが わかります。 こうすることで、 例えばここで渡した 「すもももももももものうち」 という文字の、 「も」の生成を減らすことができます。 インスタンスを生成した際には、 コンストラクタで インスタンスを作りました、 という出力がされます。 プログラムを実行して、 いくつインスタンスが作成されるかを 確認してみましょう。 プログラミングの実行結果です。 このように、5つのインスタンスが 作成されていることがわかります。 先ほどの文字列で 複数利用されていた 「も」のインスタンスが 1つしか作られていないことがわかります。 このように、 Flyweight パターンを利用することで、 インスタンスの生成数を 削減することができます。

目次