凪瀬 Blog
Programming SHOT BAR

目次

Blog 利用状況
  • 投稿数 - 260
  • 記事 - 0
  • コメント - 46658
  • トラックバック - 192
ニュース
広告
  • Java開発者募集中
  • 経歴不問
  • 腕に自信のある方
  • 富山市内
  • (株)凪瀬アーキテクツ
アクセサリ
  • あわせて読みたい
凪瀬悠輝(なぎせ ゆうき)
  • Java技術者
  • お茶好き。カクテル好き。
  • 所属は(株)凪瀬アーキテクツ
  • Twitter:@nagise

書庫

日記カテゴリ

 

昨日は内輪の勉強会に顔を出していました。デザインパターンをやってるんですが、今回のテーマがAbstractFactoryでした。 実は自分はあんまり意識してAbstractFactoryを使ったことがないのですが、ポリモフィズムを利用して メソッドがreturnするオブジェクトの具象型を切り替えるというパターンになります。

ポリモフィズムでメソッドの挙動を切り替えるといえばStrategyパターンなのですが、 AbstractFactoryパターンの実装に関して言えば、Strategyパターンと同一なのですね。

Strategyがメソッドの挙動そのものを切り替えることを目的とするのに対し、 AbstractFactoryではメソッドが返すオブジェクトを切り替えることを目的としている。

適用箇所としてはGUIのウィジェットの切り替えなどがよく例に挙げられます。 Windowsのデスクトップテーマの切り替えをするとGUIのパーツが一斉に切り替わるでしょう? そのような、生成するオブジェクトの具象型が一斉に切り替わるケースに適用せよとGoF本にも書かれているのです。

デザインパターンの入門書は実装を追いかけるので手一杯の本が多いわけですが、 StrategyとStateとAbstractFactoryは実装は変わらないのでまとめてコードを理解した上で、 デザインパターンの本題である、設計にどう生かすかという部分にページを割いて欲しいものだと思います。

職場の人のアイデアですが、「デザインパターンはリファクタリングの過程から導入するほうが分かりやすい」という ネタがあって、これはつまり、デザインパターンを実装からではなく、適用箇所から理解すべきだということです。

デザインパターンの実装の形式だけ覚えても、知識にはなっても知恵にはならない。 まずは適用シチュエーションを理解しないとその価値を理解できないのではないでしょうか。

投稿日時 : 2008年1月25日 10:58
コメント
  • # re: StrategyパターンとAbstractFactoryパターンって一緒なのでは?
    かずくん
    Posted @ 2008/01/25 12:28
    StrategyもAbstractFactoryもどちらもコンポジションベースのパターンなので、同じグループにまとめることが出来るでしょう。
    一方、TemplateMethodやFactoryMethodは継承ベース(正確には抽象実装を継承?)のパターンとしてまとめることが出来ます。

    このような視点から組み分けすると、GOFのパターンが理解しやすくなります。
  • # re: StrategyパターンとAbstractFactoryパターンって一緒なのでは?
    kox
    Posted @ 2008/01/25 13:04
    >「デザインパターンはリファクタリングの過程から導入するほうが分かりやすい」
    同意。
    ほとんどの書籍では、デザインパターンを使うために作られた設計(若干むりやりな設計)で、実際の業務に当てはめられるイメージがつきにくい気がします。
    実際に動いている業務に対して、「こんなデザインパターンで書いたほうがいいよね」としたほうが、腹に落ちやすいですね。
  • # re: StrategyパターンとAbstractFactoryパターンって一緒なのでは?
    凪瀬
    Posted @ 2008/01/25 13:22
    実装的視点から考えるとGoFデザインパターンは23も必要ないんでしょうね。
    同等の実装方式のものをグルーピングして数を減らして
    その分、設計のどういう箇所に適合するかを掘り下げるようにしたほうがよさそうですね。
  • # re: StrategyパターンとAbstractFactoryパターンって一緒なのでは?
    シャノン
    Posted @ 2008/01/25 15:14
    「パターン指向リファクタリング入門」っていう本がありますね。
    俺は積読状態です。
    # IME、「つんどく」で「積読」って変換してくれた。
  • # re: StrategyパターンとAbstractFactoryパターンって一緒なのでは?
    れい
    Posted @ 2008/01/25 22:15
    >>つんどく
    ツンデレの親戚?
  • # デザインパターンを学ぶ~その16:Factoryパターン(3)~
    まさるblog
    Posted @ 2008/02/27 23:58
    デザインパターンを学ぶ~その16:Factoryパターン(3)~
タイトル
名前
Url
コメント