SOLID 원칙이란?
-> 객체 지향 설계에서 지켜야 할 5개의 소프트웨어 개발 원칙이다.
SRP(Single Responsibility Principle): 단일 책임 원칙
OCP(Open Closed Priciple): 개방 폐쇄 원칙
LSP(Listov Substitution Priciple): 리스코프 치환 원칙
ISP(Interface Segregation Principle): 인터페이스 분리 원칙
DIP(Dependency Inversion Principle): 의존 역전 원칙
좋은 소프트웨어란 변화에 대응을 잘 하는것을 말한다.
SOLID 객체 지향 원칙을 적용하면 코드를 확장하고 유지, 보수, 관리 하기가 더 쉬워지며, 불필요한 복잡성을 제거해 리팩토링에 소요되는 시간을 줄임으로써 프로젝트 개발의 생산성을 높일 수 있다.
SOLID는 어떠한 특정 프로그래밍 언어 혹은 프레임 워크를 위해 만든 원칙이 아니다.
어떤 프레임워크, 라이브러리의 패턴도 아니먀 특정 기술에 국한되지 않는다. 그래서 TypeScript 또는 Java와 같은 선호하는 프로그래밍 언어나 프레임워크 원칙을 자유럽게 적용할 수도 있다고 한다.
1. SRP(Single Responsibility Principle): 단일 책임 원칙
a. 단일 책임 원칙은 클래스(객체)는 단 하나의 책임만 가져야 한다는 원칙
b. 하나의 클래스는 하나의 기능 담당하여 하나의 책임을 수행하도록 클래스를 따로따로 설계하라는 원칙이다.
c. 이때 책임의 범위는 딱 정해져 있는것이 아니고 어떤 프로그램을 개발하느냐에 따라 개발자마다 생각 기준이 달라질 수 있다.
2. OCP(Open Closed Priciple): 개방 폐쇄 원칙
a. 개발 폐쇄 원칙 클래스는 확장에 열려있어야 하며 수정에는 닫혀있어야 한다라는 원칙
b. 기능 추가 요청이 오면 클래스를 확장을 통해 손쉽게 구현하면서, 확장에 따른 클래스 수정은 최소화 하도록 프로그램을 작성해야 하는 설계 기법이다.
c. 다형성과 확장을 가능케 하는 객체지향의 장점을 극대화 하는 기본적인 설계 원칙
3. LSP(Listov Substitution Priciple): 리스코프 치환 원칙
a. 리스코프 치환 원칙은 서브타입은 언제나 부모(기반) 타입으로 교체할 수 있어야 한다는 원칙
b. LSP는 다형성 원리를 이용하기 위한 원칙 개념으로 보면 된다.
c. 다형성의 특징을 이용하기 위해 상위 클래스 타입으로 객체를 선언하여 하위 클래스의 인스턴스를 받으면 업 캐스팅된 부모의 메서드를 사용해도 동작이 의도대로 흘러가야 하는 것을 의미한다.
4. ISP(Interface Segregation Principle): 인터페이스 분리 원칙
a. 인터페이스 분리 원칙은 인터페이스를 각각 사용에 맞게끔 잘 분리해야한다는 설계 원칙
b. 인터페이스를 사용하는 클라이언트 기준으로 분리함으로써, 클라이언트의 목적과 용도에 적합한 인터페이스 만을 제공하는 것이 목표이다.
5. DIP(Dependency Inversion Principle): 의존 역전 원칙
a. 의존 역전 원칙은 어떤 클래스를 참조해서 사용해야 하는 상황이 생긴다면 그 클래스를 직접 참조하는 것이 아니라 그 대상의 상위요소(추상 클래스, 인터페이스)로 참조하는 원칙
b. 쉽게 말하면 구현 클래스에 의존하지 말고, 인터페이스에 의존하라는 뜻이다.
'Spring Framework' 카테고리의 다른 글
[Spring] Bean Validation (검증) - 1 (4) | 2024.10.31 |
---|---|
[Spring] 스프링 메시지, 국제화 (1) | 2024.10.29 |
[Spring] Argument Resolver 란? (0) | 2024.10.24 |
@Transactional을 선언해도 내부 메서드를 실행 시 ROLLBACK이 되지 않는 문제 (0) | 2024.08.03 |
(실습)객체지향 설계 원칙를 지키면서 설계하기 (0) | 2024.03.30 |