# SOLID 정리

> **SOLID 원칙은 변화에 유연하게 대처할 수 있게 해주는 설계 원칙이다.**

**단일 책임 원칙**과 **인터페이스 분리 원칙**은 객체가 커지지 않도록 막아준다. 객체가 많은 기능을 가지게 되면, 객체가 가진 기능의 변경 여파가 그 객체의 다른 기능까지 번지게 되고 이는 다시 다른 기능을 사용하는 클라이언트에게까지 영향을 준다.

**객체가 단일 책임을 갖게 하고 클라이언트마다 다른 인터페이스를 사용하게 함으로써, 한 기능의 변경이 다른 곳까지 미치는 영향을 최소화할 수 있고, 이는 결국 기능 변경을 보다 쉽게 할 수 있도록 만들어 준다.**

**리스코프 치환 원칙**과 **의존 역전 원칙**은 **개방 폐쇄 원칙**을 지원한다.

**개방 폐쇄 원칙은 변화되는 부분을 추상화하고 다형성을 이용함으로써 기능 확장을 하면서도 기존 코드를 수정하지 않도록 만들어 준다.**

여기서, **변화되는 부분을 추상화**할 수 있도록 도와주는 원칙이 바로 **의존 역전 원칙**이고, **다형성**을 도와주는 원칙이 **리스코프 치환 원칙**인 것이다.

> **SOLID 원칙은**&#x20;
>
> ***사용자 입장에서의 기능 사용을 중시*****하고**&#x20;
>
> ***사용자 관점에서의 설계를 지향*****하고 있다.**

* **인터페이스 분리 원칙**은 클라이언트 입장에서 인터페이스를 분리한다.
* **의존 역전 원칙**은 저수준 모듈을 사용하는 고수준 모듈 입장에서 추상화 타입을 도출하도록 유도한다.
* **리스코프 치환 원칙**은 사용자에게 기능 명세를 제공하고, 그 명세에 따라 기능을 구현할 것을 약속한다.
