デザインパターンのひとつStrategy Pattermの例を見つけたので実行してみました! ほとんどコピペで参考サイトに書いてあるのと同じ!けど練習と知識定着の為に、一つ新しいクラスを作ってこのまとめも書きました笑
まず親クラス今回はReport
クラスがあって、ここではレポートを出力するメソッドoutput_reort
が存在する。
ただHTML形式で書き出したい場合と、Text形式で書き出したい場合がある。その場合if文を書いてしまうとど形式が増えるたびにどんどん条件分岐が増えてしまい
管理がかなり大変になる。
なのでレポートの形式をクラスに格納してしまって、呼び出したいときに呼び出すようにしよう!というのがストラテジーパターンの考え方。
今回は、3つの形式があります
1.HtmlFormatter
クラス ※HTML形式で出力
2.PlainTextFormatter
クラス ※text形式で出力
3.MixTextFormatter
クラス ※合わせて出力(自分が勉強の為に作っただけ)
この3つのクラスのインスタンスをReportクラスのインスタンスに渡すだけでどの形式で使用するかを決める事が出来ます。
ちょうど@formatterに引数に渡したインスタンスが入るから、それぞれのクラスのoutput_report
を呼び出すことが出来る!
おもしろいんでコピペして動かしてみて下さい!
■参考情報