diff --git a/놀이터(예제 코드 작성)/solid-design-pattern-sample/README.md b/놀이터(예제 코드 작성)/solid-design-pattern-sample/README.md index bb6276a..8169a48 100644 --- a/놀이터(예제 코드 작성)/solid-design-pattern-sample/README.md +++ b/놀이터(예제 코드 작성)/solid-design-pattern-sample/README.md @@ -72,6 +72,14 @@ ### 템플릿 메서드(Template Method) 패턴 +#### 구현 요구사항 + +- 스포츠 강사를 구현한다. + - 모든 강사는 강의가 시작할 때 스트레칭을 한다. + - 모든 강사는 강의가 끝날 때 인사한다. + - 수영 강사는 강의 중간에 수영 동작을 보여준다. + - 축구 강사는 강의 중간에 축구 동작을 보여준다. + ### 상태(State) 패턴 ### 데코레이터(Decorator) 패턴 diff --git a/놀이터(예제 코드 작성)/solid-design-pattern-sample/src/main/kotlin/com/banjjoknim/soliddesignpatternsample/designpattern/templatemethod/after/SoccerInstructorAfter.kt b/놀이터(예제 코드 작성)/solid-design-pattern-sample/src/main/kotlin/com/banjjoknim/soliddesignpatternsample/designpattern/templatemethod/after/SoccerInstructorAfter.kt new file mode 100644 index 0000000..bb9a227 --- /dev/null +++ b/놀이터(예제 코드 작성)/solid-design-pattern-sample/src/main/kotlin/com/banjjoknim/soliddesignpatternsample/designpattern/templatemethod/after/SoccerInstructorAfter.kt @@ -0,0 +1,7 @@ +package com.banjjoknim.soliddesignpatternsample.designpattern.templatemethod.after + +class SoccerInstructorAfter : SportsInstructor() { + override fun showMovements() { + println("축구 동작을 보여준다.") + } +} diff --git a/놀이터(예제 코드 작성)/solid-design-pattern-sample/src/main/kotlin/com/banjjoknim/soliddesignpatternsample/designpattern/templatemethod/after/SportsInstructor.kt b/놀이터(예제 코드 작성)/solid-design-pattern-sample/src/main/kotlin/com/banjjoknim/soliddesignpatternsample/designpattern/templatemethod/after/SportsInstructor.kt new file mode 100644 index 0000000..6dd7a51 --- /dev/null +++ b/놀이터(예제 코드 작성)/solid-design-pattern-sample/src/main/kotlin/com/banjjoknim/soliddesignpatternsample/designpattern/templatemethod/after/SportsInstructor.kt @@ -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("인사를 한다.") + } +} diff --git a/놀이터(예제 코드 작성)/solid-design-pattern-sample/src/main/kotlin/com/banjjoknim/soliddesignpatternsample/designpattern/templatemethod/after/SportsInstructorApplicationAfter.kt b/놀이터(예제 코드 작성)/solid-design-pattern-sample/src/main/kotlin/com/banjjoknim/soliddesignpatternsample/designpattern/templatemethod/after/SportsInstructorApplicationAfter.kt new file mode 100644 index 0000000..1bb752c --- /dev/null +++ b/놀이터(예제 코드 작성)/solid-design-pattern-sample/src/main/kotlin/com/banjjoknim/soliddesignpatternsample/designpattern/templatemethod/after/SportsInstructorApplicationAfter.kt @@ -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() +} diff --git a/놀이터(예제 코드 작성)/solid-design-pattern-sample/src/main/kotlin/com/banjjoknim/soliddesignpatternsample/designpattern/templatemethod/after/SwimmingInstructorAfter.kt b/놀이터(예제 코드 작성)/solid-design-pattern-sample/src/main/kotlin/com/banjjoknim/soliddesignpatternsample/designpattern/templatemethod/after/SwimmingInstructorAfter.kt new file mode 100644 index 0000000..cd2fe6b --- /dev/null +++ b/놀이터(예제 코드 작성)/solid-design-pattern-sample/src/main/kotlin/com/banjjoknim/soliddesignpatternsample/designpattern/templatemethod/after/SwimmingInstructorAfter.kt @@ -0,0 +1,7 @@ +package com.banjjoknim.soliddesignpatternsample.designpattern.templatemethod.after + +class SwimmingInstructorAfter : SportsInstructor() { + override fun showMovements() { + println("수영 동작을 보여준다.") + } +} diff --git a/놀이터(예제 코드 작성)/solid-design-pattern-sample/src/main/kotlin/com/banjjoknim/soliddesignpatternsample/designpattern/templatemethod/before/SoccerInstructorBefore.kt b/놀이터(예제 코드 작성)/solid-design-pattern-sample/src/main/kotlin/com/banjjoknim/soliddesignpatternsample/designpattern/templatemethod/before/SoccerInstructorBefore.kt new file mode 100644 index 0000000..08e46cf --- /dev/null +++ b/놀이터(예제 코드 작성)/solid-design-pattern-sample/src/main/kotlin/com/banjjoknim/soliddesignpatternsample/designpattern/templatemethod/before/SoccerInstructorBefore.kt @@ -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("인사를 한다.") + } +} diff --git a/놀이터(예제 코드 작성)/solid-design-pattern-sample/src/main/kotlin/com/banjjoknim/soliddesignpatternsample/designpattern/templatemethod/before/SportsInstructorApplicationBefore.kt b/놀이터(예제 코드 작성)/solid-design-pattern-sample/src/main/kotlin/com/banjjoknim/soliddesignpatternsample/designpattern/templatemethod/before/SportsInstructorApplicationBefore.kt new file mode 100644 index 0000000..fa20039 --- /dev/null +++ b/놀이터(예제 코드 작성)/solid-design-pattern-sample/src/main/kotlin/com/banjjoknim/soliddesignpatternsample/designpattern/templatemethod/before/SportsInstructorApplicationBefore.kt @@ -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() +} diff --git a/놀이터(예제 코드 작성)/solid-design-pattern-sample/src/main/kotlin/com/banjjoknim/soliddesignpatternsample/designpattern/templatemethod/before/SwimmingInstructorBefore.kt b/놀이터(예제 코드 작성)/solid-design-pattern-sample/src/main/kotlin/com/banjjoknim/soliddesignpatternsample/designpattern/templatemethod/before/SwimmingInstructorBefore.kt new file mode 100644 index 0000000..00ca81d --- /dev/null +++ b/놀이터(예제 코드 작성)/solid-design-pattern-sample/src/main/kotlin/com/banjjoknim/soliddesignpatternsample/designpattern/templatemethod/before/SwimmingInstructorBefore.kt @@ -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("인사를 한다.") + } +}