SOLID 클래스 설계 원칙
- Rober C. Martin이 제공한 객체 지향 클래스 설계에 관한 다섯 가지 원칙
- 유지 보수 가능한 최상의 객체 지향 시스템 지침
SRP
Single Responsibility Principle
- 클래스는 변경할 때 한 가지 이유만 있어야 한다.
- 클래스는 작고 단일 목적을 추구해야 한다.
OCP
Open/Closed Principle
- 클래스는 확장에 열려 있고 변경에는 닫혀 있어야 한다.
- 기존 클래스의 변경 없이 기능을 확장할 수 있어야 한다.
LSP
Liskov Substitution Principle
- 하위 타입은 반드시 상위 타입을 대체할 수 있어야 한다.
- 인터페이스를 하위 타입 인스턴스로 변환하는 것이 기능성을 깨면 안 된다.
ISP
Interface Segregation Principle
- 커다란 인터페이스를 다수의 작은 인터페이스로 분할해야 한다.
- 구현체는 사용하지 않는 인터페이스에 의존하면 안 된다.
DIP
Dependency Inverse Principle
- 고수준 모듈은 저수준 모듈에 의존하면 안 된다.
- 둘 다 추상 클래스에 의존해야 한다.
- 추상 클래스는 구체 클래스에 의존하면 안 된다.
- 구체 클래스는 추상 클래스에 의존해야 한다.