새소식

Spring & Java/Java

1. 핵심원리 기본편

  • -

스프링과 객체 지향

1. 다형성이 가장 중요하다

2. 스프링은 다형성을 극대화해서 이용할 있게 도와준다.

3. 스프링에서 이야기하는 제어의 역전(IoC), 의존관계 주입(DI) 다형성을 활용해서 역할과 구현을 편리하게 다룰 있도록 지원한다.

4. 스프링을 사용하면 마치 레고 블럭 조립 하듯, 공연 무대의 배우를 선택하듯 구현을 편리하게 변경할 있다.

 

 

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

 

SRP (단일 책임 원칙)하나의 클래스는 하나의 책임만 가져야 한다. 중요한 기준은 변경이다, 변경이 있을 파급 효과가 적으면 SRP 따른것.

 

OCP (개방 폐쇄 원칙) => 확장에는 열려있으나 변경에는 닫혀 있어야 한다. => 다형성을 활용하자

 

LSP ( 리스코프 치환 원칙 )

 

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

 

DIP ( 의존관계 역전의 원칙 ) : 인터페이스(역할) 의존O, 레포지토리에 의존X

객체지향의 핵심은 다형성

1) 다형성만으로는 쉽게 부품을 갈아 끼우듯이 개발할 없다.

2) 다형성만으로는 구현 객체를 변경할 클라이언트 코드도 함께 변경된다.

다형성만으로는 OCP, DIP를 지킬 수 없다.

뭔가 필요하다!!

 

스프링은 다음 기술로 OCP + DIP 가능하게 지원한다.

1) DI : 의존관계, 의존성 주입

2) DI 컨테이너 제공 : 클라이언트 코드 변경 없이 기능을 확장 가능하다!!

 

마지막 정리!!

1. 모든 설계에 역할과 구현 분리하자

2. 애플리케이션 설계도 언제든 유연하게 변경 있도록 만드는 것이 좋은 객체 지향 설계다.

3. 이상적으로는 모든 설계에 인터페이스를 부여하는 것이 좋다. But 인터페이스를 도입하면 추상화라는 비용이 발생한다. 기능을 확장할 가능성이 없다면 구체 클래스를 직접사용하고, 향후 꼭 필요할 때 리팩토링해서 인터페이스를 도입하는 것도 방법이다.

'Spring & Java > Java' 카테고리의 다른 글

2. Spring 3대 요소  (0) 2023.11.23
5. JVM  (0) 2023.11.23
3. 개념  (0) 2022.07.18
3. 스프링 웹 개발 기초  (0) 2022.07.14
2. Java (TDD, GCC)  (0) 2022.07.14
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.