SOLID (객체 지향 설계 5원칙)
SOLID 원칙은 가독성이 확보되고 확장이 쉬운 객체 지향 설계 기반의 소프트웨어를 만들기 위한 원칙입니다.
SOLID 원칙은 앞글 자를 따서
S : 단일 책임 원칙
O : 개방-폐쇄 원칙
L : 리스코프 치환 원칙
I : 인터페이스 분리 원칙
D : 의존관계 역전 원칙
으로 구성 됩니다.
단일 책임 원칙 (Single responsibility principle) SRP
한 클래스는 하나의 책임만 가져야 합니다.
개방-폐쇄 원칙 (Open/closed principle) OCP
“소프트웨어 요소는 확장에는 열려 있으나 변경에는 닫혀 있어야 한다.”
상속이나 한 클래스를 다른 클래스의 맴버 변수 활용하는 등의 방식으로 확장은 가능하게 하되,
직접적인 클래스 수정은 지양하는 방식을 말합니다.
리스코프 치환 원칙 (Liskov substitution principle) LSP
“프로그램의 객체는 프로그램의 정확성을 깨뜨리지 않으면서 하위 타입의 인스턴스로 바꿀 수 있어야 한다.”
계약에 의한 설계를 참고하라.
- 자식 클래스는 부모클래스에서 가능한 행위를 수행할 수 있어야 합니다.
- 부모 클래스의 인스턴스 대신 자식 클래스의 인스턴스를 사용해도 문제가 없어야 한다는 것을 의미합니다.
인터페이스 분리 원칙 (Interface segregation principle) ISP
“특정 클라이언트를 위한 인터페이스 여러 개가 범용 인터페이스 하나보다 낫다.”
- 자신이 사용하지 않는 기능(인터페이스)에는 영향을 받지 말아야 한다는 의미합니다.
- 각각 독립된 인터페이스로 구현하여, 서로에게 영향을 받지 않도록 설계해야 합니다.
의존관계 역전 원칙 (Dependency inversion principle) DIP
프로그래머는 “추상화에 의존해야지, 구체화에 의존하면 안된다.” 의존성 주입은 이 원칙을 따르는 방법 중 하나다.
- 의존 관계를 맺을 때, 변화하기 쉬운것 보단 변화하기 어려운 것에 의존해야 한다는 원칙입니다.
- 구체적인 클래스인 자식 클래스에 의존적이지 않으며, 인터페이스나 추상 클래스와 같은 부모에 의존관계를 맺는 것을 말합니다.
- 즉, 객체는 객체보다 인터페이스에 의존해야합니다. 가급적이면 상속은 인터페이스를 통해 이루어져야합니다.
- 인터페이스나 추상 클래스와 같은 부모 객체는 자식 클래스로부터 독립적이여야 합니다.
https://ko.wikipedia.org/wiki/SOLID_(%EA%B0%9D%EC%B2%B4_%EC%A7%80%ED%96%A5_%EC%84%A4%EA%B3%84)
https://dev-momo.tistory.com/entry/SOLID-%EC%9B%90%EC%B9%99
'Java' 카테고리의 다른 글
Java - Thread 동시성 문제1 (0) | 2022.05.04 |
---|---|
Jave - Thread 개괄 (0) | 2022.05.03 |
Java - JUnit과 Mock (0) | 2021.09.27 |
Java - ObjectMapper의 JsonNode, ObjectNode, ArrayNode (0) | 2021.09.07 |
java - RequestHeader (0) | 2021.08.31 |
댓글