デザインパターンを再勉強しています。今日はPrototypeパターンです。
絵はVisual Studio 2005のクラスダイアグラムで書いたものですが素直にUMLで書いた方がわかりやすいような気がしますね(汗)
仕事は相変わらずVB6なので、しばらくデザインパターンを使う機会はないのですが、NEMCHI2の開発で使えそうなパターンがあるんじゃないかと思って、再度勉強し直しているのですが、いろいろヒントが得られそうな感じです。
今回、再勉強したPrototypeパターンはインスタンス生成にNewを使わずに、あらかじめ登録しておいたインスタンスをコピーして生成するようにしているのが特徴。正確には最初にClientクラスにインスタンスを登録するときにNewするんですが、そのあとはNewしない。
C#のソースはこちらを参考に
Clientクラス(リンク先の例ではManagerクラス)に
private Dictionary<string, Prototype> prototypes;
で定義したフィールドがあって、ここにあらかじめインスタンスを登録しておく。せっかくなのでHashtableじゃなくてジェネリックなコレクションを使ってみた。
あとは、名前指定で登録してあるインスタンスをコピーして返すメソッドを用意しておき、それでインスタンスを生成していく感じ。
自分的にはインスタンス生成時にNewではなく文字列で、どのインスタンスを生成するかを指定する仕組みが作ることが出来るという点が興味を引いたところで、この文字列を外部設定ファイルから読み込めば、設定ファイルを書き換えるだけで動作が変わるような仕組みが作れそう。NEMCHI2のプラグインの仕組みに使えるかも。
インスタンス生成にNewを使わないといえば、Sprint.NETもそういう感じのものじゃなかったっけな?DIだっけ?
ソースの中にクラス名が入ると、クラス間の関連が密になるので、それをなるべく疎結合するような方法として覚えておこうっと。
しかし、この本はやっぱりわかりやすいなぁ。
ソフトバンククリエイティブ (2004/06/19)
売り上げランキング: 7,578
僭越ながら助言です
デザインパターンのバイブル的存在
デザインパターンの解説書としては平凡