feat : Design Pattern - 템플릿 메서드(Template Method) 패턴 구현
This commit is contained in:
@@ -72,6 +72,14 @@
|
|||||||
|
|
||||||
### 템플릿 메서드(Template Method) 패턴
|
### 템플릿 메서드(Template Method) 패턴
|
||||||
|
|
||||||
|
#### 구현 요구사항
|
||||||
|
|
||||||
|
- 스포츠 강사를 구현한다.
|
||||||
|
- 모든 강사는 강의가 시작할 때 스트레칭을 한다.
|
||||||
|
- 모든 강사는 강의가 끝날 때 인사한다.
|
||||||
|
- 수영 강사는 강의 중간에 수영 동작을 보여준다.
|
||||||
|
- 축구 강사는 강의 중간에 축구 동작을 보여준다.
|
||||||
|
|
||||||
### 상태(State) 패턴
|
### 상태(State) 패턴
|
||||||
|
|
||||||
### 데코레이터(Decorator) 패턴
|
### 데코레이터(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