feat : Design Pattern - 템플릿 메서드(Template Method) 패턴 구현

This commit is contained in:
banjjoknim
2022-11-10 17:22:08 +09:00
parent d05562f532
commit b8853e5a30
8 changed files with 103 additions and 0 deletions

View File

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

View File

@@ -0,0 +1,7 @@
package com.banjjoknim.soliddesignpatternsample.designpattern.templatemethod.after
class SoccerInstructorAfter : SportsInstructor() {
override fun showMovements() {
println("축구 동작을 보여준다.")
}
}

View File

@@ -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("인사를 한다.")
}
}

View File

@@ -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()
}

View File

@@ -0,0 +1,7 @@
package com.banjjoknim.soliddesignpatternsample.designpattern.templatemethod.after
class SwimmingInstructorAfter : SportsInstructor() {
override fun showMovements() {
println("수영 동작을 보여준다.")
}
}

View File

@@ -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("인사를 한다.")
}
}

View File

@@ -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()
}

View File

@@ -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("인사를 한다.")
}
}