# SOLID 정리

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

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

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

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

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

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

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

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


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://koseungbin.gitbook.io/wiki/books/undefined/part-2.-di/solid/solid-1.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
