DIP

이 글과 하위 글들은 [객체 지향 프로그래밍 입문]에 관한 내용입니다. 최범균님의 인프런의 강의를 보며 정리한 내용으로 문제가 될시 삭제하겠습니다.

고수준 모듈

의미있는 단일 기능을 제공하며, 상위 수준의 정책을 구현한다.

저수준 모듈

고수준 모듈의 기능을 구현하기 위해 필요한 하위 기능의 실제 구현이다.

예시

수정한 도면 이미지를 NAS에 저장하고 측정 정보를 DB 테이블에 저장하고 수정 의뢰 정보를 DB에 저장하는 기능

고수준 모듈이 저수준 모듈을 직접 의존하면 어떻게 될까?

저수준 모듈의 변경이 고수준 모듈에 변경으로 이어지고, 고수준 정책이 바뀌지 않았으나 저수준 구현 변경으로 인한 코드 변경이 발생한다.

이렇게 저수준 모듈의 변경으로 고수준 모듈이 변경되는 것을 방지하기 위해 필요한 개념이 DIP이다.

의존 역전 원칙 Dependency Inversion Principle

  • 고수준 모듈은 저수준 모듈의 구현에 의존하면 안된다.

  • 저수준 모듈이 고수준 모듈에서 정의한 추상 타입에 의존해야 한다.

  • 고수준 입장에서 저수준 모듈을 추상화 한다. 구현 입장에서 추상화하면 안된다.

물론 처음부터 좋은 설계가 나오진 않는다.

부단한 추상화 노력이 필요하다. 요구사항/업무 이해가 높아지면서 저수준 모듈을 인지하고 상위 수준 관점에서 저수준 모듈에 대한 추상화를 시도한다.

Last updated