단일 책임 원칙
Single Responsibility Principle
모든 클래스는 각각 하나의 책임만 가져야 한다.
개방-폐쇄 원칙
Open Closed Principle
유지 보수 시 기존 코드들은 변경 사항이 적도록 하며, 확장이 용이해야 한다.
리스코프 치환 원칙
Liskov Substitution Principle
객체는 프로그램의 정확성을 깨뜨리지 않으면서 하위 타입의 인스턴스로 바꿀 수 있어야 한다. 상속이 문제 없도록 잘 작동해야 한다는 뜻.
인터페이스 분리 원칙
Interface Segregation Principle
하나의 일반적인 인터페이스 대신 구체적인 여러 개의 인터페이스를 제작할 것
의존 역전 원칙
Dependency Inversion Principle
상위 계층은 하위 계층의 변화로부터 독립할 것, 자신보다 변하기 쉬운 것에 영향을 받지 않도록 상위 클래스나 추상화 인터페이스를 두어야 한다.