프로그래밍방법론

짧생: 의존성 역전에 대한 생각

갑자기 생각난걸 빠르게 서문을 작성한 거라 가독성이 개판일 수 있어요. 내용이 틀린거랑 못 읽겠는 거에 대해선 피드백 빠르게 수용하겠습니다…

의존성 역전을 어떻게 설명하면 쉬울까 생각하다가…

만약 내가 매운게 땡겨서 집 밖에 나가서 불고기를 먹으러 가려고 함. 근데 옆에 새로 생긴 마라탕 집을 보고 마라탕을 먹음.

이걸 코딩으로 하려고 할 때, 원래 나는 불고기를 먹을 생각이었기 때문에 ‘나.먹다(불고기)’가 됨. 여기서 음식마다 클래스가 다르다고 치고, 근데 결국 마라탕을 먹었기 때문에 나.먹다(마라탕)으로 바꿔야 됨.

근데 사실 내가 먹고 싶은건 불고기도 마라탕도 아닌 그냥 매운거였음. 의존성 주입이 가지는 장점은 내가 정말로 필요한 것만 제한해 둠으로써 가지는 유연함임. 어떤 음식 클래스든 간에 맵다는 속성을 가진다면 받을 수 있도록 함수 선언을 할 때, 나.먹다(매운거)로 매운거라는 인터페이스를 두면 된다는 거임.

물론 세상에 매운 음식이 마라탕밖에 없는 세상이라면 이건 낭비임. 다시 말하면 하드웨어나 플랫폼 적인 한계로 매개변수가 여러개로 확장될 일이 없다면 필요 없단 소리.

하지만 확장될 가능성이 있다면, 다시 말해 매운 음식이 두 세개 있다면, 나.먹다(매운거)로 하면 적어도 새로운 매운 음식이 나올 때마다 나도 혓바닥을 새로 코딩해야 되진 않아도 됨. 이게 의존성 역전이고 필요한 이유임.

댓글 남기기