특정 데이터를 분석하고 서버에 전송하는 모듈을 예시로 들어보자.
이는 위 두가지 이유로 변경될 수 있음.
단일 책임 원칙에 의하면 두 책임을 분리된 클래스나 모듈로 나눠야함.
다른 시기에 다른 이유로 변경되어야 하는 두 가지를 묶는 것은 나쁜 설계일 수 있음.
한 클래스를 한 관심사에 집중하도록 유지하는 것은 중요함.
→ 클래스를 더욱더 튼튼하게 해줌.
기존의 코드를 변경하지 않으면서, 기능을 추가할 수 있도록 설계가 되어야함. 다음 예시를 보자.
fun main(args: Array<String>) {
val hello = HelloAnimal()
val cat = Animal("Cat")
val dog = Animal("Dog")
hello.hello(cat)
hello.hello(dog)
}
class Animal(val type: String)
class HelloAnimal {
fun hello(animal: Animal) {
when(animal.type) {
"Cat" -> println("냐옹")
"Dog" -> println("멍멍")
}
}
}