Java / Spring

SOLID 기본 원칙 본문

Spring/Framwork

SOLID 기본 원칙

밍구밍구밍 2024. 3. 26. 04:27

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