feat : Design Pattern - 전략(Strategy) 패턴 구현
This commit is contained in:
@@ -64,6 +64,12 @@
|
|||||||
|
|
||||||
### 전략(Strategy) 패턴
|
### 전략(Strategy) 패턴
|
||||||
|
|
||||||
|
#### 구현 요구사항
|
||||||
|
|
||||||
|
- 연령대별로 물건의 할인된 금액 계산기를 구현한다.
|
||||||
|
- 아이일 경우 할인율은 15%이다.
|
||||||
|
- 어른일 경우 할인율은 30%이다.
|
||||||
|
|
||||||
### 템플릿 메서드(Template Method) 패턴
|
### 템플릿 메서드(Template Method) 패턴
|
||||||
|
|
||||||
### 상태(State) 패턴
|
### 상태(State) 패턴
|
||||||
|
|||||||
@@ -0,0 +1,6 @@
|
|||||||
|
package com.banjjoknim.soliddesignpatternsample.designpattern.strategy.after
|
||||||
|
|
||||||
|
enum class AgeTypeAfter(val discountPolicy: DiscountPolicy) {
|
||||||
|
KIDS(DiscountPolicy { price -> price * 70 / 100 }),
|
||||||
|
ADULTS(DiscountPolicy { price -> price * 90 / 100 }),
|
||||||
|
}
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
package com.banjjoknim.soliddesignpatternsample.designpattern.strategy.after
|
||||||
|
|
||||||
|
class PriceCalculatorAfter {
|
||||||
|
fun calculate(price: Int, discountPolicy: DiscountPolicy): Int {
|
||||||
|
return discountPolicy.calculate(price)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fun interface DiscountPolicy {
|
||||||
|
fun calculate(price: Int): Int
|
||||||
|
}
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
package com.banjjoknim.soliddesignpatternsample.designpattern.strategy.after
|
||||||
|
|
||||||
|
class PriceCalculatorApplicationAfter
|
||||||
|
|
||||||
|
fun main() {
|
||||||
|
val priceCalculator = PriceCalculatorAfter()
|
||||||
|
val price = 10000
|
||||||
|
val ageType = AgeTypeAfter.KIDS
|
||||||
|
val calculatedPrice = priceCalculator.calculate(price, ageType.discountPolicy)
|
||||||
|
println(calculatedPrice)
|
||||||
|
}
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
package com.banjjoknim.soliddesignpatternsample.designpattern.strategy.before
|
||||||
|
|
||||||
|
enum class AgeTypeBefore {
|
||||||
|
KIDS,
|
||||||
|
ADULTS,
|
||||||
|
}
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
package com.banjjoknim.soliddesignpatternsample.designpattern.strategy.before
|
||||||
|
|
||||||
|
class PriceCalculatorApplicationBefore
|
||||||
|
|
||||||
|
fun main() {
|
||||||
|
val priceCalculator = PriceCalculatorBefore()
|
||||||
|
val price = 10000
|
||||||
|
val ageTypeBefore = AgeTypeBefore.ADULTS
|
||||||
|
val calculatedPrice = priceCalculator.calculate(price, ageTypeBefore)
|
||||||
|
println(calculatedPrice)
|
||||||
|
}
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
package com.banjjoknim.soliddesignpatternsample.designpattern.strategy.before
|
||||||
|
|
||||||
|
class PriceCalculatorBefore {
|
||||||
|
fun calculate(price: Int, ageType: AgeTypeBefore): Int {
|
||||||
|
return when (ageType) {
|
||||||
|
AgeTypeBefore.KIDS -> price * 70 / 100
|
||||||
|
AgeTypeBefore.ADULTS -> price * 85 / 100
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user