FactoryとTemplate Methodを使って整理