IT/자격증

[개념] 좋은 객체 지향 설계 - SOLID 원칙

mj73 2021. 7. 23. 17:07

<SOLID 5가지 원칙>

 

 

1. SRP (단일책임원칙)

 

2. OCP (개방-폐쇄 원칙)

 

3.  LSP (리스코프 치환 원칙)

 

4. ISP (인터페이스 분리 원칙)

 

5. DIP (의존관계 역전 원칙)

 


 

1. SRP (단일책임원칙)  : single responsibility principle

 

한 클래스 안에는 오직 하나의 책임만 가져야 한다.

여기서 하나의 책임이라는 것의 기준은 변경이다. 만일 변경이 있을 때 파급 효과가 크다면 단일 책임 원칙을 위반한 것이다,

 

 

 

2. OCP (개방-폐쇄 원칙) : open/closed principle

 

소프트웨어 요소가 확장에는 개방되어 있고, 변경에는 닫혀있어야 한다.

즉, 기능을 확장하거나 변경할 수 있으면서 그 기능을 사용하는 코드는 수정이 불가능해야한다.

 

 OCP 원칙을 지키기 위해서는 추상화가 필요하다. 

 

 

 

 

3.  LSP (리스코프 치환 원칙) : Liskov substitution principle

 

프로그램의 객체는 프로그램의 정확성을 깨뜨리지 않으면서, 하위 타입의 인스턴스로 변경이 가능해야한다.

예를 들어 자동자 인터페이스의 엑설은 앞으로 가는 기능, 뒤로 가게 구현하면 LSP 원칙을 위반한 것이다.

 

 

 

4. ISP (인터페이스 분리 원칙) : Interface segregation principle

 

(특정 클라이언트를 위한 인터페이스 여러 개) > (범용 인터페이스 하나)

분리하면 인터페이스가 명확해지고, 대체 가능성이 높아진다.

 

 

 

5. DIP (의존관계 역전 원칙) : Dependency inversion principle

 

구현 클래스에 의존하지 않고, 인터페이스에 의존해야 한다.

만일 운전자-자동차 관계에서는 운전자 각각과 자동차 각각의 역할에만 의존해야 한다는 것이다. 인터페이스는 자동차 역할로, 구현클래스는 자동차 종류로 보면 된다.

 

 


객체지향 원칙과 OCP, DIP 원칙 두 가지를 지키기 위해서 사용하는 것이 Spring Framework이다.