Java / Spring
SOLID 기본 원칙 본문
01_ SOLID 란?
- 좋은 객체 지향 설계의 5가지 원칙
1) SRP (Single Responsibility principle) : 단일 책임 원칙 (중요한 기준은 변경)
- 한 클래스는 하나의 책임만 가짐
- 변경 시 파급효과 최소화
2) OCP (Open Closed principle) : 개방-폐쇄 원칙
- 소프트웨어 요소는 확장에는 열려 있고, 변경에는 닫혀 있어야 함
ex) 자동차 운전자 [ 디젤차 & 가솔린차 & 전기자, 수소차 ]
>> 차종이 바뀌어도 운전자는 바뀌지 않는다.
3) LSP (Liskov Substitution principle) : 리스코프 치환 원칙
- 프로그램의 객체는 프로그램의 정확성을 깨뜨리지 않으면서 하위 타입의 인스턴스로 바꿀 수 있어야 한다.
- 인터페이스 규약(기능적)을 모두 지켜야 한다는 것
ex) 자동차 악셀을 밟으면 속도가 10 증가한다 라는 규약이 있을 때, 악셀을 밟을 때 속도가 10 감소 한다는 개발 소스를 컴파일 하여도 오류는 나지 않음, 하지만 규약(리스코프 치환 원칙)을 지키지 않은 소스임
4) ISP (Interface Segregation principle) : 인터페이스 분리 원칙
- 특정 클라이언트를 위한 인터페이스 여러 개가 범용 인터페이스 하나 보다 낫다
- 자동차 인터페이스 -> 운전, 정비 인터페이스 2개로 분리
- 사용자 클라이언트 -> 운전자, 정비사 클라이언트로 분리
>> 위 단위처럼 여러개의 인터페이스로 구분 하였을 때, 정비 인터페이스가 변해도 사용자 클라이언트에 영향을 주지 않음
(인터페이스가 명확해지고, 대체 가능성이 높아진다)
5) DIP (Dependency inversion principle) : 의존관계 역전 원칙
- 프로그래머는 추상화에 의존해야지, 구체화에 의존 해서는 안됨.
- 역할에 의존해야함 (구현 의존 x)
'Spring > Framwork' 카테고리의 다른 글
Web 기초 설계 (0) | 2024.04.30 |
---|---|
BeanFactory & ApplicationContext 간단 설명 (0) | 2024.03.28 |
IoC 란? (0) | 2024.03.28 |
DI 컨테이너 란? (0) | 2024.03.26 |
Test Code (0) | 2024.03.25 |