S: Single Resposibility Principle O: Open Close Principle, 변화에는 닫혀있고 확장에는 열려 있다.
L: Liskov Substitution Principle 서브 타입은 부모타입으로 교체 될 수 있어야 한다.
- 서브 클래스가 확장에 대한 인터페이스를 준수해야한다.
- 상위클래스의 인터페이스나 행동을 그대로 구현해야함
I: Interface Segregation Principle
- 자신이 사용하지 않는 인터페이스는 구현하지 않아야 한다.
- 최소한의 인터페이스만 구현할 것
D: Dependency Inversion Principle
- 하위레벨 모듈 변경이 상위레벨 모듈의 변경을 요구하지 않아야 함