SOLID 원칙
SRP: 단일 책임 원칙
OCP: 개방 폐쇄 원칙
LSP: 리스코프 치환 원칙
ISP: 인터페이스 분리 원칙
DIP: 의존 역전 원칙
SRP - 단일 책임 원칙
하나의 클래스에 다수의 역할과 책임이 몰려 있는 것 보다, 클래스를 역할과 책임에 따라 분리해서 각각 하나의 역할과 책임만 갖게 하는 것.
단일 책임 원칙과 가장 관계가 깊은 것은 모델링 과정을 담당하는 추상화를 통해 클래스를 선별하고 속성과 메서드를 설계할 때 단일 책임 원칙을 고려해야 함.
OCP - 개방 폐쇄 원칙
자신의 확장에는 열려 있고, 주변의 변화에는 닫혀 있어야 함.
상위 클래스 또는 인터페이스를 중간에 둠으로써, 자신의 확장에는 개방하고, 주변 변화는 폐쇄되어야 함.
LSP - 리스코프 치환 원칙
하위 클래스의 인스턴스는 상위형 객체 참조 변수에 대입해 상위 클래스의 인스턴스 역할을 하는데 문제가 없어야 한다.
리스코프 치환 원칙 적용은 분류를 이용해야 함.
ISP - 인터페이스 분리 원칙
단일 책임 원칙과 비슷함. 인터페이스로 분리하되 그 역할에 충실한 최소한의 기능만 공개하라.
DIP - 의존 역전 원칙
자신보다 변하기 쉬운 것에 의존하던 것을 추상화된 인터페이스나 상위 클래스를 두어 변하기 쉬운 것의 변화에 영향받지 않게 하는 것
상위 클래스일수록, 인터페이스일수록, 추상 클래스일수록 변하지 않을 가능성이 높기에, 하위 클래스나 구체 클래스가 아닌 상위 클래스, 인터페이스, 추상 클래스를 통해 의존해야 된다.
SoC(Separation Of Concerns) 관심사의 분리 : 관심이 같은 것끼리는 하나의 객체 안으로 또는 친한 객체로 모으고, 관심이 다른 것은 가능한 한 따로 떨어져 서로 영향을 주지 않도록 분리해야 함.
SoC를 적용하면 자연스럽게 SOLID를 극한으로 이용 가능
[정리]
SRP(단일 책임 원칙): 어떤 클래스를 변경해야 하는 이유는 오직 하나 뿐이어야 한다.
OCP(개방 폐쇄 원칙): 자신의 확장에는 열려있고, 주변의 변화에 대해서는 닫혀 있어야 한다.
LSP(리스코프 치환 원칙): 서브 타입은 언제나 자신의 기반 타입으로 교체할 수 있어야 한다.
ISP(인터페이스 분리 원칙): 클라이언트는 자신이 사용하지 않는 메서드에 의존 관계를 맺으면 안 된다.
DIP(의존 역전 원칙): 자신보다 변하기 쉬운 것에 의존하지 마라.
'📗 BOOK > 스프링 입문을 위한 자바 객체 지향의 원리와 이해' 카테고리의 다른 글
07 스프링 삼각형과 설정 정보 (0) | 2022.04.15 |
---|---|
06 스프링이 사랑한 디자인 패턴 (0) | 2022.04.08 |
04 자바가 확장한 객체 지향 (0) | 2022.03.25 |
03 자바와 객체 지향 (0) | 2022.03.25 |
02. 자바와 절차적/구조적 프로그래밍 (0) | 2022.03.18 |