본문 바로가기
[Spring]/Spring 기본

객체 지향 설계와 스프링

by 팡펑퐁 2022. 10. 11.
728x90

스프링에서의 객체 지향 설계

  • 스프링은 DI(Dependency Injection, 의존관계 주입)와 DI 컨테이너로 다형성 + OCP,DIP를 가능하게 지원한다.
  • 클라이언트 코드의 변경없이 기능 확장(쉽게 부품을 교체하듯이 개발)

 

 

스프링이 없던 시절...

  • 좋은 객체 지향 개발을 하기위해 OCP, DIP 원칙을 지키면서 개발을 하면 할 일이 너무 많다.
  • 원칙을 지키기 위한 개발이 실제 개발을 하기위한 코드보다 더 많았다. 그래서 프레임워크로 만들어버림.
  • 순수하게 자바로 OCP, DIP 원칙을 지키면서 개발을 해보면 결국 스프링 프레임워크를 만들게 된다.(더 정확히는 DI 컨테이너)

 

실무 고민

  • 인터페이스를 도입하면 추상화라는 비용이 발생한다.
  • 기능을 확장할 가능성이 없다면, 구체 클래스를 직접 사용하고, 향후 꼭 필요할 때 리팩터링해서 인터페이스를 도입하는 것도 방법이다.

 

 

참고 :

김영한 - 스프링 핵심 원리

 

728x90