<
객체지향설계의 5대 원칙 - DIP 편
>
🌠다음 포스팅🌠

객체지향설계의 5대 원칙 - ISP 편
☄이전 포스팅☄

자바가 메모리를 사용하는 방식
OOD 5대원칙

🚀 OOP를 올바르계 설계해 나가는 원칙

OOP의 4대 특성 캡슐화, 상속, 추상화, 다형성은 객체지향 프로그래밍을 이어가는 동안 사용할 Tool 같은 역할이 된다.

도구가 있다면 용도에 맞게 사용해야하는데 요리를 하면 표준에 있듯이 OOP 세계에서도 원칙이라는 것이 존대한다.

OOP를 기반으로 설계하는 방식을 OOD (Object Oriented Design)이라고 하며 설계 방법을 구체화 하여 정리한 원칙이 SOLID가 되는 것이다.

🌠 SOLID

원칙이 탄생한 것은 높은 응집도와 낮은 결합도 목표로 로버트 C.마틴이 확립한 개념이다.

☄ DIP(Dependency Inversion Principle) : 의존 역전 원칙

자신보다 변하기 쉬운 것에 의존하지 마라

아래 그림에서는 자동차 클래스스노우 타이어 클래스에 의존하는 것을 볼 수 있다.

만일 스노우타이어의 타이어를 교체해 주는 경우 코드를 어떻게 짜야만 할까?

016

해당 클래스를 모두 지우고 새로운 브랜드로 교체하는 방법은 매우 번거로운 활동이다.

때문에 우리는 타이어를 인터페이스로 만들고 각 브랜드 타이어의 특징만을 하위 클래스에서 구현한다면 코드의 확장성, 유연성을 가져갈 수 있을 것이다.

017

이제 자동차 클래스는 변하기 어려운 타이어 인터페이스에 의존하게 되었다.

이처럼 자신보다 변하기 쉬운 것에 의존하던 것을 추상화된 인터페이스나

상위 클라스를 두어 변하기 쉬운 것의 변화에 영향을 받지 않게 하는 것이 의존 역전 원칙이다.

☄ OCP(계방 - 폐쇄 원칙) 과 다른것은?

DIP원칙의 설계는 OCP와 크게 다르지 않다. 그러나 개발자가 보아야할 포인트는 OCP와 DIP의 차이가 아닌

최초 변하기 쉬웠던 스노우 타이어클래스를 의존하던 자동차 클래스를 타이어 인터페이스를 구현하는 것으로 그 의존 관계가 역전 되었다는 것에 초점을 두어야한다.

🧾 Reference

Top
Foot