DI指向設計

関数クラスとデータクラスを分けること。
DIにより処理を切り替えたいのは関数クラス(ロジックを持つクラス)だが、
この関数クラスがデータ(状態)を持っていると、(そのデータの源泉がデータベースだったりして)素でnewしにくい。
従って関数クラスからはデータ(状態)を排除し、データクラスから情報をもらってロジックを実行する、という設計にする。