SRP : 단일 책임 원칙
하나의 클래스는 하나의 책임만 가져야 한다.
중요한 기준은 변경.
변경이 있을때 파급이 적으면 원칙을 잘 따른 것
OCP : 개방-폐쇄 원칙
확장에는 열려있으나, 변경에는 닫혀있어야 한다.
LSP : 리스코프 치환 원칙
프로그램의 객체는 프로그램의 정확성을 깨트리지 않으면서 하위 타입의 인스턴스를 바꿀 수 있어야 한다.
ISP : 인터페이스 분리 원칙
특정 클라이언트를 위한 인터페이스 여러 개가 범용 인터페이스 하나보다 낫다.
DIP : 의존간계 역전 원칙
추상화에 의존해야지, 구체화에 의존해선 안된다.
클라이언트에 의존하지말고 인터페이스에 의존해야한다.