前職の就職の面接の頃から「デザインパターンについて勉強しておくと良い」みたいな話は様々な場面で聞いてはいたものの、どうしても言語やフレームワークの学習みたいな実利重視の方にばかり目が行きがちだったので、良い機会なのでデザインパターンについて勉強してみようと思う。
デザインパターンについてAmazonで書籍を探してみるといくつか見つかるが、原著の翻訳本(オブジェクト指向における再利用のためのデザインパターン)には翻訳に幾分の難があるらしいことや、JavaやC++を例として扱った書籍(Java言語で学ぶデザインパターン入門、独習デザインパターン C++)は多いものの、ちょうどRubyを勉強していたということもあり「Rubyによるデザインパターン」で学習を進めてみることにした。
- 作者: Russ Olsen,ラス・オルセン,小林健一,菅野裕,吉野雅人,山岸夢人,小島努
- 出版社/メーカー: ピアソン桐原
- 発売日: 2009/04/01
- メディア: 単行本
- 購入: 13人 クリック: 220回
- この商品を含むブログ (57件) を見る
最初の紹介となるのは3章「Template Method」
使いドコロ
大筋では共通の動きをする複数のバリエーションを持つ処理。
実際の業務においてもこのような処理を用いる場面は多々ある。
しかしこのような処理をベタに書き込んでいった場合、コードが肥大化してしまい変更箇所が分かりづらくなったり処理の流れが読み取りにくくなったりする問題がある。
そのような場面ではTemplate Methodを用いるべきである。
実装
まず、共通の処理とデータを含む基底クラスを書く。
ここで継承後に置き換えるであろう処理についてはフックメソッドを個別に用意しておく。
そして、それぞれバリエーションにあわせ、基底クラスを継承してフックメソッドを置き換えるようなメソッドを記述したクラスを作成する。
また、外部処理からは継承されたクラスを呼ぶような構造にしておく。
共通の骨格にバリエーション毎のガワを被せていくイメージ。
このような構造にすることにより、大筋の処理を記述したコードが煩雑になることが防げるため、追加修正や処理の流れの把握が容易になる。
- 作者: Russ Olsen,ラス・オルセン,小林健一,菅野裕,吉野雅人,山岸夢人,小島努
- 出版社/メーカー: ピアソン桐原
- 発売日: 2009/04/01
- メディア: 単行本
- 購入: 13人 クリック: 220回
- この商品を含むブログ (57件) を見る
まぁシステムが自社だけで完結しないとか既にある呼び出し側が拡散しすぎてるとかで使いたくても使えないって状況もあるけどね。(うちの会社のやつとかまさにこれ)