강의/SPRING _김영한

[SPRING.핵심1] 객체지향과 Java

Mink__02 2024. 3. 14. 11:17

1. Spring Framework

 

2. 객체 지향 프로그래밍?

- 역할/ 구현 으로 구분하기 → 단순&유연&변경 용이

역할 = interface / 구현 = interface를 구현한 class/ 구현 객체
[ interface를 먼저 설계&부여 → 구현 객체 만들기 ]

- client: request / server : response

 

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

1: SPR 단일 책임 원칙
클래스는 하나의 책임만 가진다.
변경이 있을 때, 변동사항이 적으면 단일 책임 원칙을 잘 따른것이다.
2: OCP 개방-폐쇠 원칙
기존 코드를 변경하는 것이 아닌, 다형성을 이용하여 코드를 확장해내간다.
→ 객체 생성& 연관 관계를 맺어주는 별도의 조립/설정자가 필요하다.
//수정 전
public class MemberService{
	private Member Repository memeber Repository = new MemoryMemberRepository();
}

//------------------------------------------------------------------------------
//수정 후
public class MemberService{
	private Member Repository memeber Repository = new JdbcMemberRepository();
}

다형성을 활용해, 인터페이스를 구현 하였을 때, 코드를 변경해야하는 부분이 생긴다. 이러한 부분은 OCP 원칙에 위배 되지만, 
별도의 설정자를 만들어줘 조율시켜줘야한다.

3: LSP 리스코프 치환 원칙
다형성에서 하위 클래스는 인터페이스 규약을 다 지켜야 한다.
ex) 자동차 interface{ 앞으로 가기 기능}
→ KIA extences 자동차 { 뒤로가기 기능} (X)
4: ISP 인터페이스 분리 원칙
범용 인터페이스를 여러 개의 인터페이스로 분리하자
ex)
자동차 interface → 운전 interface, 정비 interface
사용자 client → 운전자 client , 정비사 client
5: DSP 의존관계 역전 원칙
추상화에 의존O & 구체화에 의존X
= 인터페이스 의존O & 구현 클래스 의존X
= 역할에 의존해야한다. 

ㅇㄹ
k3는 자동차 역할을 의존해야하지, avante에 의존하면 안된다.

 

4. Spring과 객체지향 설계

- DI(Dependency Injection) : 의존관계, 의존성 주입
- DI 컨테이너 제공
- client 코드 변경 없이 기능 확장
- 쉽게 부품 교체하듯이 개발