객체 지향 프로그래밍(OOP)를 하면서 지켜야하는 5대 원칙이다
각각 **S
**RP(단일 책임 원칙), **O
**CP(개방-폐쇄 원칙), **L
**SP(리스코프 치환 원칙),
**I
**SP(인터페이스 분리 원칙), **D
**IP(의존 역전 원칙)의 앞 글자를 따서 만들어진 것이다
위와 같은 원칙을 철저히 지킨다면 변경이 쉽고 유지보수와 확장성이 높은 소프트웨어를 개발하는데 도움이 된다
하나의 클래스는 하나의 책임만을 가지며, 클래스가 제공하는
모든 서비스는 그 **하나의 책임을 수행하는데 집중
**되어 있어야 한다는 원칙
정확히 말하자면, 어떤 변화에 의해 클래스를 변경하는 이유는 오직 하나뿐이어야 함을 의미
코드가 변경되는 이유가 여러개면 여러 장소에서 코드가 바뀌기 때문에 유지보수, 확장이 어렵다
**책임 영역이 확실
**하기 때문에 한 책임의 변경에서 다른 책임의 변경으로의 연쇄 작용을 피할 수 있음
또한 책임을 적절히 분배함으로써 가독성, 유지보수성까지 챙길 수 있음