스프링과 객체 지향
1. 다형성이 가장 중요하다
2. 스프링은 다형성을 극대화해서 이용할 수 있게 도와준다.
3. 스프링에서 이야기하는 제어의 역전(IoC), 의존관계 주입(DI)은 다형성을 활용해서 역할과 구현을 편리하게 다룰 수 있도록 지원한다.
4. 스프링을 사용하면 마치 레고 블럭 조립 하듯, 공연 무대의 배우를 선택하듯 구현을 편리하게 변경할 수 있다.
< 좋은 객체 지향 설계의 5가지 원칙 >
SRP (단일 책임 원칙) : 하나의 클래스는 하나의 책임만 가져야 한다. 중요한 기준은 변경이다, 변경이 있을 때 파급 효과가 적으면 SRP를 잘 따른것.
OCP (개방 폐쇄 원칙) => 확장에는 열려있으나 변경에는 닫혀 있어야 한다. => 다형성을 활용하자
LSP ( 리스코프 치환 원칙 )
ISP ( 인터페이스 분리 원칙 )
DIP ( 의존관계 역전의 원칙 ) : 인터페이스(역할)에 의존O, 레포지토리에 의존X
객체지향의 핵심은 다형성
1) 다형성만으로는 쉽게 부품을 갈아 끼우듯이 개발할 수 없다.
2) 다형성만으로는 구현 객체를 변경할 때 클라이언트 코드도 함께 변경된다.
다형성만으로는 OCP, DIP를 지킬 수 없다.
뭔가 더 필요하다!!
스프링은 다음 기술로 OCP + DIP를 가능하게 지원한다.
1) DI : 의존관계, 의존성 주입
2) DI 컨테이너 제공 : 클라이언트 코드 변경 없이 기능을 확장 가능하다!!
마지막 정리!!
1. 모든 설계에 역할과 구현을 분리하자
2. 애플리케이션 설계도 언제든 유연하게 변경할 수 있도록 만드는 것이 좋은 객체 지향 설계다.
3. 이상적으로는 모든 설계에 인터페이스를 부여하는 것이 좋다. But 인터페이스를 도입하면 추상화라는 비용이 발생한다. 기능을 확장할 가능성이 없다면 구체 클래스를 직접사용하고, 향후 꼭 필요할 때 리팩토링해서 인터페이스를 도입하는 것도 방법이다.
'Spring & Java > Programming' 카테고리의 다른 글
8. Spring 3대 요소 (0) | 2023.11.23 |
---|---|
7. JVM (0) | 2023.11.23 |
5. 개념 (0) | 2022.07.18 |
4. 스프링 웹 개발 기초 (0) | 2022.07.14 |
3. Java (TDD, GCC) (0) | 2022.07.14 |