-
[Spring] 객체지향 특징과 다형성과 스프링Spring 2022. 4. 11. 17:49
스프링은 좋은 객체지향 애플리케이션을 개발할 수 있게 도와주는 프레임워크이다.
스프링에 대해 잘 이해하기 위해 이 객체지향에 대해 알아보자.
객체지향의 특징에는
- 추상화
- 캡슐화
- 상속
- 다형성
이 있다.
이러한 특징을 갖고 있는 객체지향프로그래밍은
유연하고 변경에 용이하다.
= 컴포넌트를 유연하게 변경하면서 개발 가능하다
= 클라이언트에게 영향을 안주고 계속 기능 확장이 가능하다.
이 중 다형성이 특히 중요하므로 다형성이 대해 알아보자.
다형성

다형성은 역할과 구현으로 세상을 구분한다고 생각하면 좋다.
위의 그림처럼 자동차역할이 있고 그 역할의 구현이 되는 여러 자동차 모델들이 있는것 처럼 말이다.

위 사진은 다형성에서 역할과 구현의 또 다른 예시이다.
장점
이러한 구분은 단순하고 유연하고 변경에 편리하다.
또, 클라이언트는
- 대상의 역할(인터페이스)만 알면 된다.
- 구현 대상의 내부구조를 몰라도 된다
- 구현 대상 내부 구조 변경 시 영향을 받지 않는다.
- 구현 대상 자체를 변경해도 영향을 받지 않는다.
자바언어에서의 다형성을 활용하면
역할 = 인터페이스, 구현 = 구현객체 로 지정할 수 있다.
이때 객체 설계 시 역할(인터페이스)를 먼저 부여하고, 그 역할을 수행하는 구현 객체를 만든다.
객체는 협력이다.
많은 객체 Client와 객체 Server는 서로 협력관계를 가진다.

클라이언트이자 서버가 되기도 한다. 자바 언어의 다형성은 오버라이딩을 적용하여 실현한다.

다형성의 본질은 interface를 구현한 객체 인스턴스를 실행시점에 유연하게 변경할 수 있다는 것에 있다.
이는 협력이라는 객체 사이의 관계에서 시작하며,
클라이언트를 변경하지 않고 서버의 구현 기능을 유연하게 변경할 수 있다.
한계
인터페이스 자체가 변하면 클라이언트, 서버 모두 큰 변경이 발생한다.
=> 인터페이스 변경이 없도록 안정적으로 설계하는 것이 가장 중요하다.
스프링과 다형성
스프링은 다형성을 극대화해서 이용할 수 있게 도와준다.
IoC(제어의 역전), DI(의존관계 주입)은 다형성을 활용해 역할과 구현을 편리하게 다룰 수 있도록 제공한다.
[출처]
스프링 핵심 원리 - 기본편
'Spring' 카테고리의 다른 글
[Spring][Kotlin] 순수 자바로 객체지향 설계원칙 지키기 + 스프링으로 전환 (0) 2022.04.12 [Spring][Kotlin] 좋은 객체지향 설계 5가지 원칙 SOLID와 스프링 (0) 2022.04.12 스프링 소개 (0) 2022.03.30 [오류 기록] Web server failed to start. Port 8080 was already in use. (0) 2022.03.25 [오류 기록] Unable to find method "java.lang.Stringorg.gradle.api.artifacts.result.ComponentSelectionReason.getDescription()" (0) 2022.03.25