본문 바로가기

WINK-(Web & App)/Spring Boot 스터디

[2025 1학기 스프링부트 스터디] 여민호 #3주차

반응형

스프링 부트 핵심원리 이해(#섹션 3)

- 일단 객체 지향 프로그래밍의 도메인 설계를 배우자

##실습##


1. https://start.spring.io

들어간 후 core 파일을 생성 후 인텔리제이에 적용

 

2. 예제 만들기

<비즈니스 요구사항과 설계>

"우리는 개발자"

(회원,member)

[1] 회원 가입 및 조회가 가능해야해!!

[2] 일반 회원과 VIP회원, 두 등급으로 나누어 져야해~!

[3] 자체 DB를 구축하지만 외부 시스템과 연동이 되야해(미확정)

============================================================

(주문,할인 :: order,discount)

[4] 회원은 상품을 주문할수 있어야해

[5] 회원 등급에 따라 할인 정책이 적용되어야해

[6] 회원 등급이 VIP이면 1000원 할인해야해!!BUT

[7] 이 할인 정책은 변경 될수도 있어...

============================================================

 

3. 회원 도메인 설계

<도메인이란?> 

프로그램이 다루는 "현실 세계의 개념"을 코드로 옮겨놓은 것

 

위 회원 기능을 모두 가지게 하려면 

회원 도메인에는  MemberRespository 인터페이스, MemoryMember Repository 클래스, MemberService 인터페이스, MemberServiceTest 클래스, MemberServiceImpl 클래스, Member 클래스, Grade(ENUM)이 포함된다.

member 패키지

 

코드를 붙여넣고 설명하는 걸 모두 펼쳐 적으면 

너무 가독성이 떨어지고 

글이 길어질것 같아 코드와 코드에 대한 설명은 내가 정리한 텍스트 파일을 첨부하겠다!!

회원 도메인 코드와 설명.pdf
0.18MB

자세한 설명 모두 작성하였다.

<회원 도메인 및 코드가 실현되는 과정>

MemberServiceImpl에서 회원을 가입시킴

-->Member 클래스에서의 형태로 받아들임(id, name, grade)

--> MemberRepository 인터페이스를 통해 저장소MemoryMemberRepository에 저장됨

--> MemberService 인터페이스에서 findMember()함수에서 id들을 호출해 test 코드에서 출력

 

[주문 사항 적용]

[1] 회원 가입 및 조회가 가능해야해!!

회원 가입 및 조회가 가능하도록 join(  )함수, findMember(  )함수 적용

 

[2] 일반 회원과 VIP회원, 두 등급으로 나누어 져야해~!

Grade enum으로 일반 회원, VIP 회원 세분화 

 

[3] 자체 DB를 구축하지만 외부 시스템과 연동이 되야해(미확정)

MemberService 인터페이스에서 언제든지 변경 가능하도록 코드 작성

 

4. 주문과 할인 도메인 설계

[4]~[7]의 주문사항을 적용한 도메인 설계

Order(주문) 패키지와 Discount(할인) 패키지 설계

discount 패키지와 order 패키지 실습

이 코드와 설명도 위 회원 도메인과 비슷하게

따로 설명을 적어 첨부하겠다!!

주문,할인 도메인 코드와 설명.pdf
0.20MB

 

<주문,할인 도메인 및 코드가 실현되는 과정>

 

DiscountPolicy인터페이스를 통해 할인 정책에 member 적용

----> FixDiscountPolicy클래스를 통해 할인 적용할 경우 계산

 

주문 요청이 들어옴 (createOrder)

---->회원 정보 조회 (memberRepository.findById)

 

 

[주문 사항 적용]

[4] 회원은 상품을 주문할수 있어야해

order 패키지에서 member 패키지를 적용해서 회원 상품 주문

 

[5] 회원 등급에 따라 할인 정책이 적용되어야해

[6] 회원 등급이 VIP이면 1000원 할인해야해!!BUT

if-else 문을 통해 등급을 나누어 할인 정책 적용

 

[7] 이 할인 정책은 변경 될수도 있어...

해결 방법 주문 서비스 구현체 

-정액 할인: 구입시 1000원씩 할인(1개당 1000원)

-정률 할인: 10000원 구입시 1000원 할인, 20000원 구입시 2000원 할인(10%할인)

변경이 쉽게 DiscountPolicy 인터페이스 구현함

 

끝!!!!!!

반응형