DI 로 OCP, DIP를 가능하게 지원한다.
모두 인터페이스를 먼저 놓고 구현체를 구현하게 되면 만약 우리가 DB를 정하지 않은 상태더라도 인터페이스를 넣어두면 다른 것 부터 개발 할 수 있다.
이상적으로는 인터페이스의 도입이 좋지만 인터페이슬르 남발하면 추상화라는 비용이 발생한다. ( 이 떄 비용은 성능에 대한 게 아니라 일단 단순하게 인터페이스만들고 구현체도 만들어야함. 또한 추상화가 되어버리면 개발자 코드를 한번 더 열어봐야됨. ) 런타임에 연결되므로 코드 열면 인터페이스만 보이는데 구현체까지 한 번더 들어가야함.
-> 이런 단점도 있으므로 장점이 더 클때만 사용...
팁!!!!!: 더 이상 기능을 확장할 가능성이 없으면 바로 구체 클래스를 쓴다. 만약 향후 필요하다면 리팩터링하여 인터페이스로 구현 (= 확장가능성이 조금이라도 있다면 처음부터 인터페이스 도입하는게 낫다.)
# 인프런 김영한님의 강의를 수강한 후 작성한 글입니다.
'Java, Spring > 스프링 핵심 원리 기본' 카테고리의 다른 글
2-2. 비즈니스 요구사항과 설계 (0) | 2022.08.05 |
---|---|
2-1. 프로젝트 생성 (0) | 2022.08.05 |
1-3. 좋은 객체 지향 설계의 5가지 원칙(SOLID) (0) | 2022.08.05 |
1-2. 좋은 객체 지향 프로그래밍이란? (0) | 2022.08.05 |
1-1. 스프링이란? (0) | 2022.08.05 |