2023. 9. 11. 13:30ㆍSpring
1. 단일 책임 원칙(Single Responsibility Principle - SRP)
- 하나의 클래스는 하나의 책임만 가져야 한다
- 클래스가 여러 책임을 가지면 코드가 복잡해지고 유지 보수가 어려워진다.
2. 개방-폐쇄 원칙(Open-Closed Principle - OCP) 제일 중요한 원칙
- 소프트웨어 엔티티(클래스, 모듈, 함수 등)는 확장에는 열려 있어야 하고, 수정에는 폐쇄적이어야 한다.
- 새로운 기능을 추가할 때 기존 코드를 수정하지 말고 확장만으로 가능하도록 설계해야 한다.
3. 리스코프 치환 원칙(Liskov Substitution Principle - LSP)
- 파생 클래스는 기반 클래스의 기능을 변경하지 않고 확장해야 한다.
- 파생 클래스는 기반 클래스 대신 사용될 수 있어야 한다.
- 인터페이스 규약을 지켜야 한다.
- 예를 들어, 자동차 인터페이스가 엑셀을 밟으면 앞으로 가야 하는데 뒤로 가도록 만들면 규약 위반이다.
4. 인터페이스 분리 원칙(Interface Segregation Principle - ISP)
- 클라이언트는 자신이 사용하지 않는 메서드에 의존하도록 강요되지 않아야 한다.
- 여러 개의 작은 인터페이스를 구현하는 것이 하나의 큰 인터페이스를 구현하는 것보다 낫다
- 요리를 할 때 재료 손질과 실제 요리를 나누면 각각에 대한 코드만 수정해주면 된다.
- 재료 손질 인터페이스를 고치면 재료 손질 클라이언트만 고치면 된다.
5. 의존성 역전 원칙(Dependency Inversion Principle - DIP)
- 고수준 모듈은 저수준 모듈에 의존해서는 안되며, 둘 모두 추상화에 의존해야 한다.
- 추상화를 통해 인터페이스와 의존성 주입을 사용하여 시스템을 유연하게 만든다.
- 역할에 의존해야 하지 구현에 의존하면 안된다.
- 역할과 구현을 철저히 분리하여 역할에만 충실하도록 만들어야 한다.
다형성만으로 DIP와 OCP를 지킬 수 없다. 이를 만족시킬 수 있는 무언가가 더 필요하다. 이를 스프링은 해결해준다.
'Spring' 카테고리의 다른 글
[Spring] 다이어그램과 프로젝트 설계 (0) | 2023.09.13 |
---|---|
[Spring] Preference-Gradle 설정 (0) | 2023.09.12 |
[Spring] 다형성의 핵심 (0) | 2023.09.10 |
[Spring] Spring의 핵심 컨셉 (0) | 2023.09.09 |
[Spring] developmentOnly("org.springframework.boot:spring-boot-devtools") 설정했는데 안될때 (0) | 2023.08.10 |