스프링 이야기에 왜 객체 지향 이야기가 나오는가?

정리

"지금까지 했던 내용을 다시 정리해 봅시다."

<aside> 💡 인터페이스를 먼저 설계하고 구현을 나중에 정하게 되면 구현 기술이 바뀌더라도 나머지를 변경할 필요가 없어서 변경의 범위가 작고 유연해진다는 장점이 있습니다.

</aside>

실무 고민

이상적으로는 인터페이스를 도입하는게 좋지만 무분별하게 도입을 하면 추상화라는 비용이 발생합니다.

추상화가 되면 개발자 코드를 한번 더 열어봐야 합니다. 코드만 보면 인터페이스만 보이는데 그래서 코드를 한번 더 들어가야 합니다. 이런식으로 단점도 있습니다. 그러니 장점이 단점을 넘어설 때 선택을 해야합니다.

확장할 가능성이 없다면 그냥 구체 클래스를 바로 써도 됩니다. 그리고 향후에 꼭 필요하면 리팩토링해서 인터페이스를 구현해도 됩니다. 물론 확장 가능성이 있다면 인터페이스를 쓰는게 좋겠죠.