SOLID DIP(의존 역전의 원칙)

Dev. 로티·2022년 1월 23일
0

자바

목록 보기
5/9
post-thumbnail

DIP란 Dependency inversion principal의 약자로

클래스는 구체화된 클래스에 의존하지 않고 추상화된 객체(인터페이스, 추상클래스)에 의존해야하고, 고수준 모듈은 저수준 모듈에게 의존해서는 안된다는 의미이다.


추상화된 객체에 의존해야하는 이유는 다음과 같다.

  • A라는 클래스가 B라는 구체화된 클래스에 의존하는 상태에서 만약 B클래스가 변경된다면 A클래스가 B클래스의 변경에 영향을 받는다.

  • 저수준 모듈을 고수준 모듈이 의존하고 있을 경우 저수준 모듈의 변경에 따라 고수준 모듈이 영향을 받는다.

이러한 이유들로 인해 코드는 변경과 확장이 어려운 코드가 됨과 동시에, 유연하지 못한 코드로 자리잡히게 되기 때문에 추상화된 객체에 의존해야한다.

ex) DIP 적용시킨 코드 예시

public class PriceCalculator {
    …
    …
    private final Event event;

    …
    …
}

위 코드에서는 이벤트라는 객체를 NoEvent 클래스나 ~Event 클래스(구체화된 클래스)에 의존하지 않고 추상화된 클래스에 의존한 모습을 볼 수 있다.

이로써 이벤트가 달라짐에 따라 구체화 클래스만 교체함으로써 유연한 코드를 작성할 수 있다.

(예시 추가 예정)

0개의 댓글