솔리드(SOLID)원칙은 객체 지향 프로그래밍에서 객체 설계의 5가지 원칙을 말합니다. 이 원칙들은 객체 지향 프로그래밍을 통해 유연하고 확장 가능한 소프트웨어를 만드는 데에 큰 도움을 줍니다.
SRP(Single Responsibility Principle) : 단일 책임 원칙
객체는 단 하나의 책임만 가져야 하며, 객체가 변경되어야 하는 이유는 단 하나의 이유여야 한다는 것을 의미합니다.
OCP(Open-Closed Principle) : 개방-폐쇄 원칙
소프트웨어 개체(클래스, 모듈, 함수 등)는 확장에 대해서는 열려 있어야 하지만 변경에 대해서는 닫혀 있어야 한다는 것을 의미합니다.
LSP(Liskov Substitution Principle) : 리스코프 치환 원칙
상위 타입의 객체는 하위 타입의 객체로 대체될 수 있어야 한다는 것을 의미합니다. 즉, 서브 클래스는 상위 클래스에서 정의한 규약을 지켜야 한다는 것입니다.
ISP(Interface Segregation Principle) : 인터페이스 분리 원칙
인터페이스를 클라이언트에 특화되도록 분리시켜 클라이언트가 자신이 사용하지 않는 메서드에 의존하지 않도록 하는 것을 의미합니다.
DIP(Dependency Inversion Principle) : 의존 역전 원칙
상위 수준의 모듈은 하위 수준의 모듈에 의존해서는 안 되며, 둘 모두 추상화된 것에 의존해야 한다는 것을 의미합니다. 즉 의존관계를 맺을 때, 변화하기 쉬운 것보다는 변화하기 어려운 것에 의존해야 한다는 것입니다.