[Ruby] Template Method パターン

業務で、先輩エンジニアがTemplate Methodパータンを使っていて、ひよっこの僕は ???ってなったので備忘録として書いています。

Template Method パターンとは

デザインパターンの1つである。ある処理のおまかなアルゴリズムは、決めておいてそのアルゴリズムの具体的な設計をサブクラスに任せること。

何はともあれ、サンプルを見てみましょう。

サンプル

hashを作るクラス・サブクラスを作成していきます。

Bookテーブル・Authorテーブルから、それぞれのレコードを取得する実装です。

 

上記のコードのように、HashCreatorクラスは、抽象的なクラスで、大まかなアルゴリズムを決めています。

逆に、BookHashCreatorクラス・AuthorHashCreatorクラスは、具体的なアルゴリズムを決めています。

get_queryメソッドをオーバーライドすることによって、それぞれのサブクラス内で異なった処理をすることができます。

このように分離することによって、

  • クラス毎に何を実装しているのか理解しやすい
  • 変更(追加・削除)がある場合も、他の処理に影響が出ない(少ない)構造にすることができる

 

まとめ

  • 共通の処理は、継承元のクラスに!
  • 具体的な処理は、それぞれのサブクラスに!

みたいに覚えてくと、だいぶ可読性上がりますね。

デザインパターンを本腰入れて勉強しないと。。。

2 件のコメント

  • コメントを残す

    メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

    CAPTCHA