SOLID
SRP : 단일 책임 원칙
Single responsibility principle
- 한 클래스는 하나의 책임만 가져야한다.
- 클래스를 변경하는 이유는 단 하나여야한다.
- 변경에 따른 파급효과가 적다
OCP : 개방-폐쇄 원칙
Open/closed principle
- 확장에는 열려있으나, 변경에는 닫혀있어야한다.
LSP : 리스코프 치환 원칙
Liskov substitution principle
- 다형성에서 하위 클래스는 인터페이스 규약을 모두 지켜야한다.
- 하위 타입 객체는 상위 타입 객체에서 가능한 행위를 수행할 수 있어야 한다.
ISP : 인터페이스 분리 원칙
Interface segregation principle
- 범용 인터페이스를 만드는 것이 아닌, 특정 기능을 위한 인터페이스로 분리하도록 한다.
- 인터페이스가 명확해지고, 대체 가능성이 높아진다.
DIP : 의존관계 역전 원칙
Dependency inversion principle
- 고차원 모듈은 저차원 모듈에 의존하면 안된다.
- 하위 클래스의 변경이 상위 모듈의 변경에 영향울 주지 않음
- 구현 클래스가 아닌 인터페이스에 의존해야 유연하게 구현체를 대체할 수 있다.