SOLID
- 로버트 마틴이 정리한 좋은 객체 지향 설계를 위한 5가지 원칙
SRP (Single Responsibility Principle)
- 단일 책임 원칙
- 하나의 클래스는 하나의 책임만을 가져야 한다
- 즉 변경이 있을 시, 전체 코드에 파급 효과가 적어야 한다는 의미
- ex) 객체의 생성과 사용을 분리함
OCP (Open/Closed principle)
- 개방 - 폐쇄 원칙
- 확장에는 열려있으나 변경에는 닫혀 있어야 함
- 인터페이스로 역할, 이를 구현한 클래스를 통해 역할과 구현의 분리를 이룸
- OCP를 완전히 지키려면 별도의 조립자, 구성 영역을 담당해주는 설정자가 필요함 (AppConfig)
LSP (Liskov Substitution Principle)
-
리스코프 치환 원칙
-
객체는 프로그램의 정확성을 깨뜨리지 않으면서 하위 타입의 인스턴스로 바꿀 수 있어야 함
-
즉, 하위 클래스가 인터페이스의 규약을 다 지켜야 한다는 의미
-
ex) 앞으로 가는 기능은 죽이 되든 밥이 되든 앞으로 가야하지 뒤로 가면 안 된다
ISP (Interface Segregation Principle)
- 인터페이스 분리 원칙
- 특정 클라이언트를 위한 인터페이스 다수가 범용 인터페이스 하나보다 나음
- 인터페이스가 명확해지며, 대체 가능성이 높아짐
DIP (Dependency inversion principle)
- 의존 관계 역전 원칙
- 구현 클래스에 의존하지 말고, 인터페이스에 의존하라!
- 역할에 의존하라!
- 구현에 의존하게 되면 변경이 어려움
인프런 김영한님의 모든 개발자를 위한 HTTP 웹 기본 지식을 정리한 내용입니다.
김영한님 인프런 강의