feat : Design Pattern - 템플릿 메서드(Template Method) 패턴 구현
This commit is contained in:
@@ -72,6 +72,14 @@
|
||||
|
||||
### 템플릿 메서드(Template Method) 패턴
|
||||
|
||||
#### 구현 요구사항
|
||||
|
||||
- 스포츠 강사를 구현한다.
|
||||
- 모든 강사는 강의가 시작할 때 스트레칭을 한다.
|
||||
- 모든 강사는 강의가 끝날 때 인사한다.
|
||||
- 수영 강사는 강의 중간에 수영 동작을 보여준다.
|
||||
- 축구 강사는 강의 중간에 축구 동작을 보여준다.
|
||||
|
||||
### 상태(State) 패턴
|
||||
|
||||
### 데코레이터(Decorator) 패턴
|
||||
|
||||
@@ -0,0 +1,7 @@
|
||||
package com.banjjoknim.soliddesignpatternsample.designpattern.templatemethod.after
|
||||
|
||||
class SoccerInstructorAfter : SportsInstructor() {
|
||||
override fun showMovements() {
|
||||
println("축구 동작을 보여준다.")
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
package com.banjjoknim.soliddesignpatternsample.designpattern.templatemethod.after
|
||||
|
||||
abstract class SportsInstructor {
|
||||
fun startLesson() {
|
||||
showStretching()
|
||||
showMovements()
|
||||
greeting()
|
||||
}
|
||||
|
||||
private fun showStretching() {
|
||||
println("스트레칭을 한다.")
|
||||
}
|
||||
|
||||
protected abstract fun showMovements()
|
||||
|
||||
private fun greeting() {
|
||||
println("인사를 한다.")
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
package com.banjjoknim.soliddesignpatternsample.designpattern.templatemethod.after
|
||||
|
||||
class SportsInstructorApplicationAfter
|
||||
|
||||
fun main() {
|
||||
val swimmingInstructor = SwimmingInstructorAfter()
|
||||
swimmingInstructor.startLesson()
|
||||
val soccerInstructor = SoccerInstructorAfter()
|
||||
soccerInstructor.startLesson()
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
package com.banjjoknim.soliddesignpatternsample.designpattern.templatemethod.after
|
||||
|
||||
class SwimmingInstructorAfter : SportsInstructor() {
|
||||
override fun showMovements() {
|
||||
println("수영 동작을 보여준다.")
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
package com.banjjoknim.soliddesignpatternsample.designpattern.templatemethod.before
|
||||
|
||||
class SoccerInstructorBefore {
|
||||
fun startLesson() {
|
||||
showStretching()
|
||||
showSoccerMovements()
|
||||
greeting()
|
||||
}
|
||||
|
||||
private fun showStretching() {
|
||||
println("스트레칭을 한다.")
|
||||
}
|
||||
|
||||
private fun showSoccerMovements() {
|
||||
println("축구 동작을 보여준다.")
|
||||
}
|
||||
|
||||
private fun greeting() {
|
||||
println("인사를 한다.")
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
package com.banjjoknim.soliddesignpatternsample.designpattern.templatemethod.before
|
||||
|
||||
class SportsInstructorApplicationBefore
|
||||
|
||||
fun main() {
|
||||
val swimmingTeacher = SwimmingInstructorBefore()
|
||||
swimmingTeacher.startLesson()
|
||||
val soccerTeacher = SoccerInstructorBefore()
|
||||
soccerTeacher.startLesson()
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
package com.banjjoknim.soliddesignpatternsample.designpattern.templatemethod.before
|
||||
|
||||
class SwimmingInstructorBefore {
|
||||
fun startLesson() {
|
||||
showStretching()
|
||||
showSwimming()
|
||||
greeting()
|
||||
}
|
||||
|
||||
private fun showStretching() {
|
||||
println("스트레칭을 한다.")
|
||||
}
|
||||
|
||||
private fun showSwimming() {
|
||||
println("수영 동작을 보여준다.")
|
||||
}
|
||||
|
||||
private fun greeting() {
|
||||
println("인사를 한다.")
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user