[Spring] 객체 지향 설계의 5가지 원칙 (SOLID)
SOLID : 클린 코드로 유명한 로버트 마틴이 좋은 객체 지향 설계의 5가지 원칙을 정의했다
1. SRP
- Single Responsibility Principle, 단일 책임 원칙
- 하나의 클래스는 하나의 책임만 가져야 한다
- 책임의 기준은 모호하지만 대표적으로 기능의 변경시 파급 효과가 적도록 해야 한다
2. OCP
- Open/Closed Principle, 개방-폐쇄 원칙
- 소프트웨어 요소는 확장에는 열려있고 변경에는 닫혀 있어야 한다
- 대표적으로 인터페이스를 만든 뒤 새로운 클래스에서 기능을 추가하는 것이 있다
- DI(Dependancy Injection)는 대표적인 OCP 적용 사례이다
3. LSP
- Liskov Substitution Principle, 리스코프 치환 원칙
- 하위 객체들은 상위 인터페이스에서 정한 기능들을 변경하지 않아야 한다
4. ISP
- Interface Segregation Principle, 인터페이스 분리 원칙
- 인터페이스는 기능에 따라 여러 개로 나누는 것이 좋다
- 인터페이스가 명확해지며, 대체 가능성이 높아진다
5. DIP
- Dependency Inversion Principle, 의존관계 역전 원칙
- 프로그래머는 추상화에 의존해야지 구체화에 의존하면 안된다