1. 스프링
- 이전 글에서 다형성만으로는 OCP와 DIP를 지킬 수 없다는 내용을 작성하였다.
- 스프링은 아래의 기술들로 다형성과 OCP, DIP를 가능하도록 지원해줌
-> DI(Dependency Injection): 의존관계, 의존성 주입
-> DI 컨테이너 제공
- 위 기능들을 활용하면, 클라이언트 코드의 변경 없이, 기능이 확장 가능해진다.
(즉, 쉽게 부품을 교체하듯이 개발 가능)
2. 지금까지 내용 정리
- 해당 카테고리의 첫번째 게시물부터 지금까지 내용들을 한번 정리해보자.
- 모든 설계에 역할과 구현을 분리하자.
- 애플리케이션을 설계할 때, 마치 공연을 설계하듯 배역만 만들어두고, 배우는 언제든지 변경할 수 있도록 유연하게 설계하는 것
-> 이것에 좋은 객체 지향 설계이다.
-> 이것이 가능하려면, 다형성, OCP, DIP를 모두 지켜야 한다.
-> 이를 위해 스프링 프레임워크를 사용하자
- 이상적으로는 모든 설계에 인터페이스를 부여하자
-> 어떤 기술을 사용할지 정해지지 않은 상태이더라고, 설계를 보고 유연하게 구현 할 수 있다.
- 하지만, 인터페이스를 도입하면 추상화라는 비용이 발생한다.
(여기서 비용이란 성능이 아니라, 개발자가 코드를 한번 더 열어야됨)
(코드를 열었을 때 "어? 인터페이스밖에 없네? 하고 한번 더 들어가봐야 됨")
- 코드가 추상화된다면 장점도 있지만, 단점도 당연히 존재한다.
- 따라서, 장점이 더 부각되는 상황에서 인터페이스를 택하는 것을 추천한다.
- 기능을 확장할 생각이 없다면, 구체 클래스를 직접 사용하고, 향후 필요해질 경우 코드를 리팩터링해서 인터페이스를 도입하는 것도 하나의 방법이 될 수 있다.
-> 결국 경험에 의해서 이런 선택들을 하게 된다.
위 내용은 김영한 님의 인프런 강의 "스프링 핵심 원리 - 기본편"의 내용과 강의자료를 토대로 작성된 게시글입니다.
강의 링크:
'Web > spring study' 카테고리의 다른 글
[Spring] 예시 스프링 프로젝트 설계 (0) | 2023.01.09 |
---|---|
[Spring] IOC, DI, 컨테이너 (0) | 2022.12.17 |
[Spring] 좋은 객체 지향 설계 5가지 원칙(SOLID) (0) | 2022.05.26 |
[Spring] 좋은 객체지향 프로그래밍이란? (0) | 2022.05.17 |
[Spring] 스프링이란? (0) | 2022.04.19 |
댓글