SOLID 원칙

S : Single-responsibility

클래스는 하나의 책임만 가져야한다.

O : Open–closed principle

확장에는 열려있고, 수정에는 닫혀있어야한다.

L : Liskov substitution

부모 클래스의 인스턴스를 자식 클래스의 인스턴스로 변경할 수 있어야 한다.

I : Interface segregation

하나의 일반적인 인터페이스보단, 여러개의 구체적인 인터페이스가 낫다.

D : Dependency inversion

클래스에 의존관계를 두지말고, 추상클래스나, 인터페이스로 의존관계를 맺자