SOLID

SRP : 단일 책임 원칙

객체는 오직 하나의 책임을 가져야한다.

OCP : 개방-폐쇄 원칙

객체는 확장에 대해서 개방적이고 수정에 대해서 폐쇄적이어야한다.

LSP : 리스코프 치환 원칙

자식 클래스는 언제나 부모 클래스를 대체할 수 있어야한다.

ISP : 인터페이스 분리 원칙

클래스는 사용하지 않는 인터페이스를 구현해선 안 된다.

DIP : 의존성 역전 원칙

추상성이 높고 안정적인 고수준의 클래스는 구체적이고 불안정한 저수준의 클래스에 의존해서는 안 된다.