back/spring

스프링 핵심1 - 스프링과 객체 지향 설계

코로그 주인장 2023. 3. 15. 16:26

- 추가 예정

- 스프링이라는 단어는 문맥에 따라 다르게 사용됨

1. 스프링 DI(Dependency Injection) 컨테이너 기술

2. 스프링 프레임워크

3. 스프링 부트, 프레임워크를 모두 포함한 생태계

 

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

- 자바는 객체 지향 언어 (객체 지향 특징으로는 추상화/캡슐화/상속/다형성)

- 스프링은 객체 지향 언어가 가진 강력한 특징을 살려내는, 좋은 객체 지향 어플리케이션을 개발할 수 있게 도와주는 프레임워크

 

- 객체 지향 프로그래밍은 프로그램을 유연하고 변경에 용이하게 만듬 > 대규모 소프트웨어 개발에 사용됨

 

< 다형성 >

- 객체와 협력이라는 관계부터 생각하기!

- 클라이언트: 요청 / 서버: 응답

- 수많은 객체 클라이언트와 객체 서버는 서로 협력 관계를 가진다.

- 다형성의 예시: 오버라이딩 / 인터페이스 구현 객체를 실행시점에 유연하게 변경 / 클래스 상속 관계(오버라이딩 적용 가능)

 

인터페이스 구현체를 유연하게 변경 가능
클라이언트 변경 없이, 서버의 구현 기능을 유연하게 변경 가능

 

< 좋은 객체 지향 설계의 5가지 원칙 (SOLID) >

1. SRP(단일 책임 원칙)

2. OCP(개방-폐쇄 원칙)

3. LSP(리스코프 치환 원칙)

4. ISP(인터페이스 분리 원칙)

5. DIP(의존관계 역전 원칙)

 

 

MemberService는 인터페이스에도 의존하지만 구현 클래스도 동시에 의존 > DIP 위반

- 객체 지향의 핵심은 다형성이지만, 다형성만으론 OCP / DIP 를 지킬 수 없다.