デザインパターンの一つ 親クラスで処理の枠組みを決めて子クラスで実装する手法 抽象クラスの抽象メソッドが小クラスごとの実装の表現を行う

メリット・デメリット
  • メリット
    • 共通的な処理を親クラスにまとめられる
    • 処理全体の流れは変えずに、子クラスごとに一部の処理内容を変えることができる
  • デメリット
    • 処理全体の流れが親クラスに決められるので、子クラスの拡張が制限される
    • 子クラスで親クラスの振る舞いを変えるとリスコフの置換原則に反する
種類

振る舞いに関するデザインパターン

classDiagram
	class TestTemplate{
		<<abstract>>
		teardown()
		test()
		setup()*
		execute()*
	}
	class UserServiceTest{
		setup()
		execute()
	}
	class ItemServiceTest{
		setup()
		execute()
	}
	TestTemplate <|-- UserServiceTest
	TestTemplate <|-- ItemServiceTest