도구를 올바르게 사용하는 법이 있는 것처럼 객체 지향의 특성을 올바르게 사용하는 방법, 즉 객체 지향 언어를 이용해 객체 지향 프로그램을 올바르게 설계해 나가는 방법이나 원칙이 존재할까?
SOLID 원칙이 바로 그것이다. SOLID는 아래 5가지 원칙의 앞 머리 알파벳을 따서 부르는 이름이다.
- SRP(Single Responsibility Principle) : 단일 책임 원칙
- 어떤 클래스를 변경해야 하는 이유는 오직 하나뿐이어야 한다.
- OCP(Open Closed Principle) : 개방 폐쇄 원칙
- 소프트웨어 엔티티(클래스, 모듈, 함수 등)는 확장에 대해서는 열려 있어야 하지만 변경에 대해서는 닫혀 있어야 한다.
- 자신의 확장에는 열려 있고, 주변의 변화에 대해서는 닫혀 있어야 한다.
- 소프트웨어 엔티티(클래스, 모듈, 함수 등)는 확장에 대해서는 열려 있어야 하지만 변경에 대해서는 닫혀 있어야 한다.
- LSP(Liskov Substitution Principle) : 리스코프 치환 원칙
- 서브 타입은 언제나 자신의 기반 타입(base type)으로 교체할 수 있어야 한다.
- 하위 클래스의 인스턴스는 상위형 객체 잠조 변수에 대입해 상위 클래스의 인스턴스 역할을 하는 데 문제가 없어야 한다.
- 상속이라는 특성을 올바르게 활용하면 자연스럽게 얻게된다.
- ISP(Inteface Segregation Principle) : 인터페이스 분리 원칙
- 클라이언트는 자신이 사용하지 않는 메서드에 의존 관계를 맺으면 안된다.
- 인터페이스를 통해 메서드를 외부에 제공할 때는 최소한의 메서드만 제공해야한다.(인터페이스 최소주의 원칙)
- 인터페이스의 모든 메서드는 강제 구현을 해야하기 때문에 문제가 생길 수 있다.
- DIP(Dependency Inversion Principle) : 의존 역전 원칙
- 고차원 모듈은 저차원 모둘에 의존하면 안된다. 이 두 모듈 모두 다른 추상화된 것에 의존해야 한다.
- 추상화된 것은 구체적인 것에 의존하면 안 된다. 구체적인 것이 추상화된 것에 의존해야 한다.
이 원칙들은 응집도는 높이고, 결합도는 낮추는 고전 원칙을 객체 지향의 관점에서 재정립한 것이다. SOLID는 객체 지향 4대 특성을 발판으로 하고 있으며, 이어지는 Chpater6에서 소개할 디자인 패턴의 뼈대이며 스프링 프레임워크의 근간이기도 하다.
'java' 카테고리의 다른 글
자바 객체 지향의 원리와 이해_Chapter07_스프링 삼각형과 설정 정보 (0) | 2023.03.22 |
---|---|
자바 객체 지향의 원리와 이해_Chapter04_자바가 확장한 객체 지향 (0) | 2023.03.21 |
자바 객체 지향의 원리와 이해_Chapter03_자바와 객체 지향 (0) | 2023.03.20 |
자바 객체 지향의 원리와 이해_Chapter02_자바와 절차적/ 구조적 프로그래밍 (0) | 2023.03.17 |
자바 객체 지향의 원리와 이해_Chapter01_사람을 사랑한 기술 (0) | 2023.03.17 |