2018-01-10pythonとデザインパターンの学習のため、記事をまとめようと思いました。デザインパターンの最初はTemplateパターンです。Method】-テンプレは準備した、あとはお好きに-https://qiita.com/kidach1/items/7c2a80bfc8a87a05051fこの記事はPythonです#どんなパターンかソフトウェアには変化がつきものである。その変化の度に、広範囲な修正が入っているようではとても対応できない。変化に強い構造を実現したい。骨子は以下2種のクラスの利用。都度if分で処理を分けている。フォーマットがさらに増えたらどうなるのか・・ということで、解決策を考える。#パターンの適用によるリファクタリング##変わるものと変わらないものを分離する基本的な処理の流れ・テンプレート(変わらないもの)をフォーマット(変わるもの)に依存させるべきではない。・前者は抽象的な基底クラスに、後者は具象サブクラスに定義する。##つまり「基本的な処理の流れ」である、1.特定フォーマットに必要なヘッダ情報を出力する。2.タイトルを出力する。3.レポート本体(body)を出力する。4.フォーマットに要求される残りの要素を出力する。これらを「テンプレ」として抽象基底クラスに定義し、残りはサブクラスへ切り出す。output_endのように***具象クラスによってオーバーライドできる(不要ならしなくてもよい)***メソッドのことをフックメソッドと呼ぶ。一方でoutput_lineは、直接呼び出すと例外を発生させる。具象クラスによるオーバーライドを強要している。→output_lineは、「各フォーマットごとに処理が異なる=より変化しやすい処理」という想定があるため。変わるもの(具象サブクラス)と変わらないもの(テンプレート)を分離して、変化に強い構造へ。