구현할 당시에는 결합도가 있어도 구현하는 것이 경제적이었겠지만 (수익은 먼저, 비용은 나중에) 이제 그 ‘나중’을 생각할 때다.
결합도가 왜 있는지는 중요하지 않고 언제 결합도 비용을 지불할 것인가가 중요하다.
Sender
와 Receiver
에겐 결합이 존재한다.Sender
가 보내는 필드가 변경되면 Receiver
쪽에 해당 필드에 해당하는 메서드를 추가하거나 변경해야 한다.interface Sender {
fun writeField1()
fun writeField2()
}
interface Receiver {
fun readField1()
fun readField2()
}
Sender
내부 깊은 곳에선 세 번째 필드를 계산해야 하며 receive
함수는 send
함수가 세 번째 필드를 추가하지 않으면 읽을 수 없다.interface Sender {
fun writeField(format: Format) // map 형태의 파라미터를 정의
}
interface Receiver {
fun readField(format: Format)
}