객체지향프로그래밍은
추상화, 캡슐화, 상속, 다형성 등등의 특징이 있다.
그중 스프링에서 중요하게 다뤄지는 특징은 다형성이다.
다형성
역할과 구현으로 세상을 구현
운전자는 자동차의 기본 기능을 다룰 수만 있다면
차들의 구체적인 내부를 몰라도 어떤 차종이든 몰 수 있다.
즉, 역할과 구현을 분리함으로써 다음과 같이 유연하고 변경이 편리해진다.
- 클라이언트는 대상의 역할(인터페이스)만 알면 된다.
- 클라이언트는 구현 대상의 내부 구조를 몰라도 된다.
- 클라이언트는 구현 대상의 내부 구조가 변경되어도 영향을 받지 않는다.
- 클라이언트는 구현 대상 자체를 변경해도 영향을 받지 않는다.
=> 역할(인터페이스) > 구현(인터페이스를 구현한 클래스, 구현 객체)
자바 언어의 다형성
"오버라이딩"을 떠올리면 된다.
다음 그림처럼 MemberRepository라는 인터페이스(역할)에 빨간 서버나 초록 서버가 올 수 있다.
빨간 서버가 오면 Memory라는 서버가, 초록 서버가 오면 Jdbc라는 서버가
MemberRepository가 된다.
인터페이스가 변하면 클라이언트와 서버 모두에 큰 변경이 발생하므로,
변동이 있더라도 인터페이스 자체는 흔들리지 않도록 설계하는 것이 중요하다 !!
IoC(제어의 역전), DI(의존관계 주입)는 다형성을 활용해 역할과 구현을 편리하게 다룰 수 있도록 도와준다.
'웹개발 > 스프링' 카테고리의 다른 글
[Inflearn] 회원 도메인 개발 (0) | 2025.01.29 |
---|---|
[Inflearn] 회원 도메인 설계 (0) | 2025.01.29 |
[Inflearn] 비즈니스 요구사항과 설계 (0) | 2025.01.29 |
[Inflearn] 객체 지향 설계의 5가지 원칙(SOLID) (0) | 2025.01.26 |
[Inflearn] 스프링 (0) | 2025.01.25 |