昨日は内輪の勉強会に顔を出していました。デザインパターンをやってるんですが、今回のテーマがAbstractFactoryでした。
実は自分はあんまり意識してAbstractFactoryを使ったことがないのですが、ポリモフィズムを利用して
メソッドがreturnするオブジェクトの具象型を切り替えるというパターンになります。
ポリモフィズムでメソッドの挙動を切り替えるといえばStrategyパターンなのですが、
AbstractFactoryパターンの実装に関して言えば、Strategyパターンと同一なのですね。
Strategyがメソッドの挙動そのものを切り替えることを目的とするのに対し、
AbstractFactoryではメソッドが返すオブジェクトを切り替えることを目的としている。
適用箇所としてはGUIのウィジェットの切り替えなどがよく例に挙げられます。
Windowsのデスクトップテーマの切り替えをするとGUIのパーツが一斉に切り替わるでしょう?
そのような、生成するオブジェクトの具象型が一斉に切り替わるケースに適用せよとGoF本にも書かれているのです。
デザインパターンの入門書は実装を追いかけるので手一杯の本が多いわけですが、
StrategyとStateとAbstractFactoryは実装は変わらないのでまとめてコードを理解した上で、
デザインパターンの本題である、設計にどう生かすかという部分にページを割いて欲しいものだと思います。
職場の人のアイデアですが、「デザインパターンはリファクタリングの過程から導入するほうが分かりやすい」という
ネタがあって、これはつまり、デザインパターンを実装からではなく、適用箇所から理解すべきだということです。
デザインパターンの実装の形式だけ覚えても、知識にはなっても知恵にはならない。
まずは適用シチュエーションを理解しないとその価値を理解できないのではないでしょうか。
投稿日時 : 2008年1月25日 10:58