S
단일 책임의 원칙 (SRP, Single Responsibility Principle)
: 작성된 클래스는 하나의 기능만 가지며 클래스가 제공하는 모든 서비스는 그 하나의 책임을 수행하는데 집중되어야 한다는 원칙
O
개방폐쇄의 원칙 (OCP, Open Close Principle)
: 소프트웨어의 구성요소는 확장에는 열려있고 변경에는 닫혀있어야 한다는 원칙
L
리스코프 치환의 원칙 (The Liskov Substitution Principle)
: 서브 타입은 언제나 기반 타입으로 교체할 수 있어야 한다는 원칙
I
인터페이스 분리의 원칙 (Interface Segregation Principle)
: 한 클래스는 자신이 사용하지 않는 인터페이스는 구현하지 말아야 한다는 원칙
D
의존성역전의 법칙 (DIP, Dependency Inversion Principle)
: 구조적 디자인에서 발생하던 하위 레벨 모듈의 변경이 상위 레벨 모듈의 변경을 요구하는 위계관계를 끊는 의미의 역전이다.
실제 사용 관계는 바뀌지 않으며, 추상을 매개로 메시지를 주고 받음으로써 관계를 최대한 느슨하게 만드는 원칙