[Spring] - 객체 지향 설계와 스프링②

uHan2·2020년 12월 8일
0

TIL.BackEnd

목록 보기
3/12
post-custom-banner

비록 시작은 코딩일기지만, 그 끝은 창대하게
어엿한 개발자 블로그로 성장할 수 있도록.


스프링 핵심 원리

본 게시글은 김영한님의 스프링 핵심 원리 강의 내용을 정리한 글입니다.

좋은 객체 지향이란 :: 다형성 Polymorphism

유연하고 변경이 용이하다?
세상을 역할구현으로 구분해보자

  • 운전자자동차

운전자 역할자동차 역할이 있을 때, 자동차에는 어떠한 자동차가 와도 운전자에 영향을 끼치지 않는다. 차가 바뀌어도 운전자는 그대로 운전할 수 있다.
운전자는 자동차 인터페이스만 다룰 줄 알면 된다.
즉, 클라이언트에 영향을 끼치지 않으면서 새로운 기능을 제공할 수 있다.

  • 로미오줄리엣 (공연)

로미오와 줄리엣 공연에서 로미오, 줄리엣 역할에는 배우 아무나 배역이 가능하다.
어떤 배우든지 그 배역을 맡을 수 있고, 다른 배우로 대체도 가능하다.

이 밖에도 키보드, 마우스 등 표준 인터페이스, 정렬 알고리즘 등이 있다.

이렇게 역할구현으로 구분하면 세상이 단순해지고 유연해지며 변경이 용이해진다.
그리고 다음과 같은 장점을 얻는다.

  • 클라이언트는 대상의 역할, 인터페이스만 알면된다.
  • 클라이언트는 구현 대상의 내부 구조를 몰라도 된다.
  • 클라이언트는 구현 대상의 내부 구조가 변경되어도 영향을 받지 않는다.
  • 클라이언트는 구현 대상 자체를 변경해도 영향을 받지 않는다.

그렇다면 Java에서는?

  • 역할인터페이스
  • 구현인터페이스를 구현한 클래스, 구현 객체

객체를 설계할 때 역할구현을 명확하게 분리하자.
인터페이스(역할)을 먼저 부여하고, 그 다음 이를 수행하는 객체를 구현하자.

  • 다형성의 본질
    • 인터페이스를 구현한 객체 인스턴스를 실행 시점에 유연하게 변경 가능
    • 다형성의 본질을 이해하려면 협력이라는 객체사이의 관계에서 시작해야함
    • 클라이언트를 변경하지 않고, 서버의 구현 기능을 유연하게 변경할 수 있음.

인터페이스를 안정적으로 잘 설계하는 것이 굉장히 중요하다.

Spring :: 객체 지향

  • 다형성이 가장 중요하다.
  • Spring은 다형성을 극대화 시켜준다.
  • IoC, DI다형성을 활용해 역할구현을 편리하게 다룰 수 있도록 지원한다.
  • 마지 레고 블록 조립하듯이, 공연 무대의 배우를 고르듯이, 구현을 편리하게 해준다.

Spring에서 다형성과 더불어 굉장히 중요한 것이 바로 SOLID 원칙
은 다음편에 이어서..

profile
For the 1% inspiration.
post-custom-banner

0개의 댓글