더북(TheBook)

의존성 역전 원칙

이 원칙도 인터페이스와 관련 있다. 로버트 마틴은 “상위 수준 모듈은 하위 수준 모듈에 의존해서는 안 되며 이 둘은 추상화에 의존해야 한다”라고 말했다.

인터페이스 기반 언어에서는 대개 의존성 주입이라는 연관된 개념으로 표현한다. 클래스 A가 클래스 B의 서비스가 필요할 때 A는 B를 생성하지 않는다. 대신 A 생성자에 건넨 파라미터 하나가 B를 서술하는 인터페이스 역할을 한다. 이제 A는 B에 의존하지 않고 자신의 인터페이스만 바라본다. A가 생성되면 구체화한 B를 넘겨받는다. B 역시 인터페이스에 의존한다.

리스코프 치환 원칙 덕분에 인터페이스를 만족하는, B의 파생형 버전을 제공할 수 있는 이점이 있다. 또한, 인터페이스는(개방/폐쇄 원칙에도 불구하고) B를 고쳐야 할 경우 하위 버전 호환성을 유지하려면 어떤 로직을 계속 갖고 있어야 하는지 일목요연하게 서술한다.

자바스크립트에 추상화 따윈 없다고 했지만, 이 원칙을 잘 살려 프로그램을 짜면 혜택을 누릴 수 있다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.