•
스프링은 다형성 + OCP, DIP를 가능하게 지원함
◦
DI : 의존관계, 의존성 주입
◦
DI 컨테이너 제공
•
클라이언트 코드의 변경 없이 기능 확장 가능
⇒ 쉽게 부품 갈아끼우듯 개발 가능
정리
•
모든 설계에 역할과 구현을 분리
•
언제든지 유연하게 변경할 수 있도록 만드는 것이 좋은 객체 지향 설계
•
이상적으로는 모든 설계에 인터페이스를 부여하는 것
정리(실무)
•
하지만 인터페이스를 도입하면 추상화라는 비용이 발생 (코드를 한 번 더 열어보고 작성해야 함)
◦
단점 < 장점 인가 생각
◦
후에 추상화가 필요할 것인가 생각
•
기능을 확장할 가능성이 없다면 구체 클래스를 직접 사용하고 향후 꼭 필요할 때 리팩토링해서 인터페이스를 도입하는 것도 방법임


