그렇다면 왜 스프링 프레임워크를 사용할까요??
아래 다이어그램 관계에서 컴퓨터를 조립을 통한 예를 볼까요?
우선, ComputerAssemble이라는 인터페이스를 만들고, 컴퓨터 부품들을 받아 조립을 하는 Method를 하나 선언했고, 이를 구현하는 ComputerAseembleBySelf 다음과 같이 선언했습니다.
위 예제에서 SOLID관점에서 보면 무엇이 문제가 있을까요?
private final ComputerKeyboard keyboard = new SamsungKeyboard();
private final ComputerMouse mouse = new LogitechMouse();
private final ComputerMonitor monitor = new LgMonitor();
OCP는 변경에는 닫혀있고, 확장에는 열려있는 것을 말한다고 했다. 만약, 삼성키보드가 아닌 로지텍 키보드로 바꿔야한다면, 다음과 같이 코드를 영향을 준다!
//private final ComputerKeyboard keyboard = new SamsungKeyboard();
private final ComputerKeyboard keyboard = new LogitechKeyboard();