feat : Design Pattern - 전략(Strategy) 패턴 구현
This commit is contained in:
@@ -64,6 +64,12 @@
|
||||
|
||||
### 전략(Strategy) 패턴
|
||||
|
||||
#### 구현 요구사항
|
||||
|
||||
- 연령대별로 물건의 할인된 금액 계산기를 구현한다.
|
||||
- 아이일 경우 할인율은 15%이다.
|
||||
- 어른일 경우 할인율은 30%이다.
|
||||
|
||||
### 템플릿 메서드(Template Method) 패턴
|
||||
|
||||
### 상태(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