Back-end/Spring
[Spring] 객체지향설계와 스프링
잔디🌿
2024. 9. 15. 20:38
스프링에 객체지향 개념 이야기가 나오는 이유
스프링은 DI(Dependency Injection)라는 의존관계 주입과 DI 컨테이너 제공으로 다형성 + OCP와 DIP를 가능하게 지원한다.
클라이언트 코드의 변경 없이 기능 확장이 가능하다
스프링이 없던 시절엔 OCP와 DIP원칙을 지키면서 개발을 해보니 너무 할 일이 많았다. 이를 위해 프레임워크를 만들었다.
정리
모든 설계에 역할과 구현을 분리하자
공연으로 예를 들면 배역만 만들어두고 배우는 언제든지 유연하게 변경할 수 있도록 하는 것이 좋은 객체지향설계이다.
이상적으로는 모든 설계에 인터페이스를 부여하자
실무적인 관점에서
인터페이스를 도입하려면 추상화라는 비용이 발생한다.
-> 예를 들어 특정 코드를 보기 위해 파일을 한번 더 열어보아야한다.
따라서 기능을 확장할 가능성이 없다면 구체클래스를 직접 사용하고 향후 꼭 필요할 때 리팩터링해서 인터페이스를 도입하는 것도 방법이다.
느낀점
감은 잡았지만 아직도 어렵다. 특히 실무적인 관점에서 다시 한번 보는 것이 어려운 것 같다. 분명한 원칙이 있고, 현실적인 해결책이 있는...?
이 부분은 더 공부하고 개발해보면서 익혀나가야겠다.
출처
인프런 김영한강사님 - 스프링 핵심원리 기본편
스프링 핵심 원리 - 기본편 강의 | 김영한 - 인프런
김영한 | 스프링 입문자가 예제를 만들어가면서 스프링의 핵심 원리를 이해하고, 스프링 기본기를 확실히 다질 수 있습니다., 스프링 핵심 원리를 이해하고, 성장하는 백엔드 개발자가 되어보
www.inflearn.com