SRP: 모든 클래스는 하나의 책임만 (변경 이유 1개) OCP: 확장에는 Open, 수정에는 Close LSP: 상위 클래스의 행동 규약을 하위 클래스가 위반하면 안 됨 ISP: 클라이언트가 비사용 메서드에 의존하지 않아야 함 DIP: 변화하기 어려운 것(추상화)에 의존해야 함