SOLID란 로버트 마틴이 정의한, 좋은 객체 지향 설계의 5가지 원칙이다.
SRP(Single Responsibility Principle): 단일 책임 원칙
OCP(Open/Closed Principle): 개방-폐쇄 원칙
LSP(Liskov substitution Principle): 리스코프 치환 원칙
ISP(Interface segregation Principle): 인터페이스 분리 원칙
DIP(Dependency Inversion Principle): 의존관계 역전 원칙
다형성만으로는 OCP, DIP를 지킬 수 없다.
다음의 예시를 보자.
public class Service{
private Repository repository = new MemoryRepository();
}
Service 클래스는 Repository 인터페이스와 MemoryRepository 구현객체에 의존하고 있다. ➜ DIP 위반
현재는 MemoryRepository를 저장공간으로 사용하고 있다. DataBaseRepository로 바꾸려면 다음의 과정을 거쳐야 한다.
public class Service{
private Repository repository = new DataBaseRepository();
}
클라이언트인 Service 클래스의 코드를 변경했다. ➜ OCP 위반
그럼 OCP, DIP를 지키려면 어떻게 해야하는가?
🌱 SPRING 🌱Spring은 다음 기술로 위의 문제를 해결한다.
다음 포스트에서는 실제 자바 코드를 통해 왜 Spring이 필요한지 알아보겠다.