C++でデザインパターンを実装していこうよ 第8回 TemplateMethodパターン

初めてデザインパターンを学んだとき、一番理解しやすいと感じたのがTemplateMethodパターンでした。

今回の例は
http://www.dofactory.com/Patterns/PatternTemplate.aspx#_self2
これです。

なんかデータベースへのアクセスをしてますが、書き直したバージョンでは無理やりコンパイルを通しただけにしちゃいました。

DataAccessObject::Run()がテンプレート的な役割を果たしていて、
・データベースに接続して
・データを抽出して
・抽出したデータを処理して
・データベースから切断する
という流れ自体は常に同じです。

ただ、"どんなデータを抽出するか"と、"抽出したデータをどう処理するか"というのはいろいろ切り替えられたほうが便利なのでSelect()とProcessをvirtual関数にして子クラスでオーバーライドできるようにしておきます。

https://github.com/TakahashiShuuhei/DesignPatternPractice/blob/master/TemplateMethod.cpp