Strategy周りのコードが冗長になってきたため、抽象化等してリファクタした