Search on the blog

2012年7月29日日曜日

デザインパターン(4) Factory Method

まえおき
今日はFactory Methodパターンについて。去年読んだときは理解できなくて、いろいろなサイトを見て回った。今日改めて読んでみてもメリットがよくわからなかった。この本で強調されているポイントがちょっと違うのではないかという疑問を持った。分かりやすいサイトを見つけたのでそこを読んで理解度を補強した。


まとめ
  • インスタンスの生成のための枠組みと実際の生成を切り離すためのパターン
  • FactoryクラスでTemplate Methodパターンが使われている
  • 使用者クラスから生成するクラスの依存性を排除する

疑問点
  • メリットが「CreatorクラスがConcreteProductに依存しないこと」と書かれているけど、「ConcreteProductの使用者クラスがConcreteProductに依存しないこと」の方がうれしい部分だと思うけど。。
  • 使用するクラスを直接newするのは悪だと言うのは知っていて、それをしないために単純なインスタンス生成メソッドを使うことと、Factory Methodを使うことの違いがよく分からなかった。参考サイトを見て解決した。

その他
  • Factory Methodパターンでインスタンス生成して欲しいことを明示するために、コンストラクタをpublicにしないというテクニックはおもしろいと思った。

参考サイト


Factory Methodパターンを使わないと、以下の3つのデメリットがあることを示し、
  1. クライアントクラスと具象クラスの結合度が高い
  2. 同等の生成処理の実装が各クライアントクラスに散在している
  3. 生成処理の中に変動しやすい if 文が存在している
単純なファクトリクラスを利用することで、1.2.を解決できることを示し、さらに3.を解決するためにファクトリクラスを抽象化し、Factory Methodパターンへと導くという説明が素晴らしかった。

0 件のコメント:

コメントを投稿