하나씩 차근차근
article thumbnail

스프링은 객체 지향의 특징 중 다형성을 극대화해서 이용할 수 있게 도와줍니다.

이 포스트에서는 다형성과 좋은 객체 지향 프로그램에 대해 정리해보았습니다.

 

객체 지향 프로그램

  • 컴퓨터 프로그램을 명령어의 목록이 아닌 여러개의 독립된 단위 (객체) 들의 모임으로 보는 것.
  • 프로그램을 유연하고 변경이 용이하게 만들기 때문에 대규모 소프트웨어 개발에 사용됨

 

다형성

  • 프로그램 언어의 각 요소들이 다양한 자료형에 속하는것이 허가되는 성질
  • 다형성을 통해 인터페이스를 구현한 객체 인스턴트를 실행 시점에 유연하게 변경할 수 있다.

 

역할과 구현을 분리

인터페이스를 구현한 객체 인스턴트를 유연하게 변경하는 예제를 실생활의 예를 통해 알아보면

먼저 역할과 구현으로 구분을 해보겠습니다.

위 그림에서 자동차라는 역할(인터페이스) 를 따라서 자동차(객체 인스턴트) 를 구현했기 때문에

운전자는 k3 에서 테슬라로 자동차를 바꿔도 운전할 수 있습니다.

 

이를 정리하면

  • 클라이언트(운전자) 는 대상의 역할(인터페이스) 만 알면 됨
  • 클라이언트(운전자) 는 구현 대상(객체 인스턴트) 의 내부 구조를 몰라도 됨
  • 클라이언트(운전자) 는 구현 대상의 내부 구조가 변경되어도 영향받지 않음
  • 클라이언트(운전자) 는 구현 대상 자체를 변경(k3 -> 테슬라) 해도 영향받지 않음

 

스프링과 객체 지향

  • 스프링은 다형성을 극대화해서 이용할 수 있게 해준다.
  • 스프링의 제어의 역전(Ioc), 의존관계 주입(DI) 는 역할과 구현을 편리하게 해줌.
profile

하나씩 차근차근

@jeehwan_lee

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!