본문으로 바로가기
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.


수 많은 시행착오와 베스트 프랙티스 속에서 객체 지향 설계의 정수라고 할 수 있는 5원칙이 집대성 되었는데, SOLID이다. SOLID는 아래 5가지 원칙의 앞 머리 알파벳을 따서 부르는 이름이다.


1. SRP : 단일 책임 원칙 - 어떤 클래스를 변경해야 하는 이유는 오직 하나뿐이어야 한다.

2. OCP : 개방 폐쇄 원칙 - 자신의 확장에는 열려 있고, 주변의 변화에 대해서는 닫혀 있어야 한다.

3. LSP : 리스코프 치환 원칙 - 서브 타입은 언제나 자신의 가반 타입으로 교체할 수 있어야 한다.

4. ISP : 인터페이스 분리 원칙 - 클라이언트는 자신이 사용하지 않는 메서드에 의존 관게를 맺으면 안된다.

5. DIP : 의존 역전 원칙 - 자신보다 변하기 쉬운 것에 의존하지 마라


이 원칙들은 응집도는 높이고, 결합도는 낮추는 고전 원칙을 객체 지향의 관점에서 재정립한 것이라고 할 수 있다.


결합도는 모듈(클래스)간의 상호 의존정도로서 결합도가 낮으면 모듈간의상호 의존성이 줄어들어 객체의 재사용이나 수정, 유지보수가 용이하다. 


응집도는 하나의 모듈 내부에 존재하는 구성 요소들의 기능적 관련성으로 응집도가 높은 모듈은하나의 책임에 집중하고 독립성이 높아져 재사용이나 기능의 수정, 유지보수가 용이하다.


SOLID는 객체 지향 프로그램을 구성하는 속성, 메서드, 클래스, 객체, 패키지, 모듈, 라이브러리, 프레임워크, 아키텍처 등 다양한 곳에 다양하게 적용되는 것이기에 막상 SOLID가 적용됐는지 아닌지 애매모호하거나 보는 사람의 관점에 따라 다르게 해석될 수 있다.


SOLID를 잘 녹여낸 프로그램은 상대적으로 이해하기 쉽고, 리팩토링과 유지보수가 수월할 뿐만 아니라 논리적으로 정연하다. SOLID는 객체 지향 4대 특성을 발판으로 하고 있으며, 디자인 패턴의 뼈대이며 스프링 프레임워크의 근간이기도 하다.


SOLID 원칙을 적용하면 소스 파일의 개수는 더 많아지는 경향이 있다. 하지만 논리를 더욱 잘 분할하고, 잘 표현하기에 이해하기 쉽고, 개발하기 쉽고, 유지보수에도 쉽다.


출처 - 스프링 입문을 위한 자바 객체 지향의 원리와 이해