인프런 김영한 강의 정리/스프링 핵심원리 기본편

[스프링 핵심원리] 객체 지향 프로그래밍(SOLID)

백엔드 개발자 - 젤리곰 2024. 3. 14. 09:47
728x90

1. 스프링의 핵심 가치

- 스프링은 자바 언어 기반의 프레임워크

- 좋은 객체 지향 어플리케이션을 개발할 수 있도록 도와주는 프레임워크

 

2. 다형성

역할과 구현으로 구분하여, 단순해지고 유연해지고 변경도 편리해진다.

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

인터페이스를 구현한 객체 인스턴스를 실행 시점에서 유연하게 변경할 수 있다.

클라이언트(요청하는 쪽)를 변경하지 않고, 서버(응답하는 쪽)의 구현 기능을 유연하게 변경할 수 있다.

 

*서버가 응답을 한다고 꼭 데이터를 뱉어내는 건 아니다. 

내부적으로 프린트할 수도 있고 리턴값이 void일 수 있음.

클라이언트가 요청한 행위를 하는게 응답이다.

 

*한계점

- 인터페이스 자체가 변하면, 클라이언트, 서버 모두 큰 변경이 발생한다.

 따라서, 인터페이스를 안정적으로 설계해야한다.

 

3. 객체 지향 설계의 5가지 원칙(SOLID)

Single responsibility principle : 단일 책임 원칙

➡️변경이 있을 때, 딱 하나의 클래스 혹은 하나의 지점만 고치면 되도록 설계해야한다.

 

Open/closed principle : 개방 - 폐쇄 원칙 

➡️확장에는 열려있고 변경에는 닫혀있어야한다. 

 

Liskov substitution principle : 리스코프 치환 원칙 

➡️하위 클래스는 인터페이스 규약을 지켜야한다.

 

Interface segregation principle : 인터페이스 분리 원칙

➡️인터페이스를 역할에 맞게 잘 쪼개는게 좋다. 

 

Dependency inversion principle : 의존관계 역전 원칙

➡️추상화에 의존해야지 구체화에 의존하면 안된다. (역할에 의존해야한다.)

 

 

한 줄 요약
부품을 갈아 끼우듯이 개발하는 것이 객체지향 프로그래밍이다.

 

 

728x90