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