OOP 5원칙 : 클린 코드로 유명한 로버트 마틴이 정리해놓은 객체 지향 설계
SRP : 단일 책임 원칙 (Single responsibility principle)
OCP : 개방-폐쇄 원칙 (Open/closed principle)
LSP : 리스코프 치환 원칙 (Liskov substitution principle)
ISP : 인터페이스 분리 원칙(Interface segreagation principle)
DIP : 의존관계 역전 원칙(Dependency Inversion principle)
SRP 단일 책임 원칙
Single responsibility principle
- 한 클래스는 하나의 책임만 가져야 한다.
- 클래스의 단일 책임을 원칙으로 한다.
OCP 개방-폐쇄 원칙
Open/closed principle
- SW 요소는 확장에는 열려있으나, 변경에는 닫혀있어야 한다.
- 객체의 확장은 개방적으로, 객체의 변경은 폐쇄적으로 대한다.
LSP 리스코프 치환 원칙
Liskov substitution principle
- 프로그램 객체는 프로그램의 정확성을 깨뜨리지 않으며 하위 타입의 인스턴스로 바꿀 수 있어야 한다.
- 사용자의 관점에서 기능에 영향을 미치지 않고 자식 클래스가 부모 클래스를 대체할 수 있어야 한다.
- 자동차 Interface : 엑셀 메서드는 앞으로 가는 기능이지만 뒤로 가게 구현한다면 LSP 위반
ISP 인터페이스 분리 원칙
Interface segregation principle
- 해당 인터페이스를 사용하는 클라이언트 기준으로 분리해야 한다.
- == 클라이언트 입장에서 사용하는 기능만 제공하도록 인터페이스를 분리해야 한다.
- 인터페이스의 단일 책임을 원칙으로 한다.
- 자동차 Interface ⇒ 운전 Interface, 정비 Interface로 분리
- 사용자 Client ⇒ 운전자 Client, 정비사 Client로 분리
DIP 의존관계 역전 원칙
Dependency Inversion principle
- 구현체 클래스에 의존하지 말고 추상성(인터페이스)에 의존하라
- 역할에 의존해야지, 구현 자체에 의존해서는 안된다.
- DIP 위반 : 추상화에 의존하지 않고 구체화에 의존한다.