본문 바로가기
Back-end/Spring

[Spring] 객체지향설계와 스프링

by 잔디🌿 2024. 9. 15.

    스프링에 객체지향 개념 이야기가 나오는 이유

    스프링은 DI(Dependency Injection)라는 의존관계 주입과 DI 컨테이너 제공으로 다형성 + OCP와 DIP를 가능하게 지원한다.

    클라이언트 코드의 변경 없이 기능 확장이 가능하다

     

    스프링이 없던 시절엔 OCP와 DIP원칙을 지키면서 개발을 해보니 너무 할 일이 많았다. 이를 위해 프레임워크를 만들었다.

     

    정리

    모든 설계에 역할과 구현을 분리하자

    공연으로 예를 들면 배역만 만들어두고 배우는 언제든지 유연하게 변경할 수 있도록 하는 것이 좋은 객체지향설계이다.

    이상적으로는 모든 설계에 인터페이스를 부여하자

     

    실무적인 관점에서

    인터페이스를 도입하려면 추상화라는 비용이 발생한다. 

    -> 예를 들어 특정 코드를 보기 위해 파일을 한번 더 열어보아야한다.

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

     

    느낀점

    감은 잡았지만 아직도 어렵다. 특히 실무적인 관점에서 다시 한번 보는 것이 어려운 것 같다. 분명한 원칙이 있고, 현실적인 해결책이 있는...?

    이 부분은 더 공부하고 개발해보면서 익혀나가야겠다.

     

    출처

    인프런 김영한강사님 - 스프링 핵심원리 기본편

    https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-%ED%95%B5%EC%8B%AC-%EC%9B%90%EB%A6%AC-%EA%B8%B0%EB%B3%B8%ED%8E%B8/dashboard

     

    스프링 핵심 원리 - 기본편 강의 | 김영한 - 인프런

    김영한 | 스프링 입문자가 예제를 만들어가면서 스프링의 핵심 원리를 이해하고, 스프링 기본기를 확실히 다질 수 있습니다., 스프링 핵심 원리를 이해하고, 성장하는 백엔드 개발자가 되어보

    www.inflearn.com