전략 패턴에 대해서
행위 패턴의 하나로,
어떤 문제를 해결함에어떤 방법을 사용하는 지 적절히 선택, 혹은 작성할 수 있게 해주는 패턴
코틀린으로 평균을 구하는 계산기 만들기
이 계산기의 평균을 구하는 방법은 총 3가지가 있습니다.
-
산술 평균 : (a + b) / 2
-
기하 평균 : root2(a * b)
-
조화 평균 : 2ab / (a + b)
이 3가지를 각각 따로 입력 받아 실행하는 평균만 구하는 계산기의 코틀린 코드입니다.
import kotlin.math.sqrt
fun main(args: Array<String>) {
val (a, b) = Pair(30, 80)
val arithmeticCalculator = Calculator(ArithmeticMean())
println(arithmeticCalculator.average.calculate(a, b))
val geometricCalculator = Calculator(GeometricMean())
println(geometricCalculator.average.calculate(a, b))
val harmonicCalculator = Calculator(HarmonicMean())
println(harmonicCalculator.average.calculate(a, b))
}
class Calculator(val average: Average)
interface Average {
fun calculate(a: Int, b: Int): Int
}
class ArithmeticMean: Average {
override fun calculate(a: Int, b: Int): Int {
return (a + b) / 2
}
}
class GeometricMean: Average {
override fun calculate(a: Int, b: Int): Int {
return sqrt(a.toDouble() * b.toDouble()).toInt()
}
}
class HarmonicMean: Average {
override fun calculate(a: Int, b: Int): Int {
return (2*a*b) / (a + b)
}
}ArithmeticMean, GeometricMean, HarmonicMean 클래스는 Average 인터페이스를 상속 받아 평균을 구하는 메서드를 오버라이드하고 있습니다.
