- 다형성 + OCP, DIP를 가능하게 지원해준다. - DI 컨테이너 제공 - 클라이언트의 코드 변경 없이 기능을 확장할 수 있다. - 쉽게 부품 교체하듯이 개발할 수 있다. 모든 설계에 역할과 구현을 분리하자! - 인터페이스를 도입하면 추상화라는 비용이 발생한다. - 기능 확장 가능성이 없다면 구체 클래스를 사용하고, 향후 필요할 때 리팩터링해서 인터페이스를 도입하는 방법이 있다. 객체지향 책 추천 : 객체지향의 사실과 오해 스프링 책 추천 : 토비의 스프링 JPA 책 추천 : 자바 ORM 표준 JPA 프로그래밍 출처 https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-%ED%95%B5%EC%8B%AC-%EC%9B..