코드 그라데이션
프로젝트 생성, 비즈니스 요구사항과 설계 본문
build.grade
plugins {
id 'java'
id 'org.springframework.boot' version '2.7.16'
id 'io.spring.dependency-management' version '1.0.15.RELEASE'
}
group = 'inflearn'
version = '0.0.1-SNAPSHOT'
java {
sourceCompatibility = '11'
}
repositories {
mavenCentral()
}
dependencies {
implementation 'org.springframework.boot:spring-boot-starter'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
}
tasks.named('test') {
useJUnitPlatform()
}
- 일단 모든 의존성은 일절 추가하지 않았음.
- 프로그램 커리큘럼 상 점차 스프링으로 발전시켜 나갈 예정
비즈니스 요구사항과 설계
회원
- 회원을 가입하고 조회할 수 있다.
- 회원은 일반과 VIP 두 가지 등급이 있다.
- 회원 데이터는 자체 DB를 구축할 수 있고, 외부 시스템과 연동할 수 있다. (미확정) => 인터페이스만 역할과 구현으로 구분하면 되므로, 문제 없다!
주문과 할인 정책
- 회원은 상품을 주문할 수 있다.
- 회원 등급에 따라 할인 정책을 적용할 수 있다.
- 할인 정책은 모든 VIP는 1000원을 할인해주는 고정 금액 할인을 적용해달라. (나중에 변경 될 수 있다.)
- 할인 정책은 변경 가능성이 높다. 회사의 기본 할인 정책을 아직 정하지 못했고, 오픈 직전까지 고민을 미루고 싶다.
- 최악의 경우 할인을 적용하지 않을 수 도 있다. (미확정)
요구사항을 보면 회원 데이터, 할인 정책 같은 부분은 지금 결정하기 어려운 부분이다.
그렇다고 이런 정책이 결정될 때까지 개발을 무기한 기다릴 수 도 없다.
우리는 앞에서 배운 객체 지향 설계 방법이 있지 않은가!
인터페이스를 만들고 구현체를 언제든지 갈아끼울 수 있도록 설계하면 된다.
728x90
'Spring > 핵심 원리 구현' 카테고리의 다른 글
회원 도메인 - 구현과 테스트 (0) | 2024.01.12 |
---|---|
회원 도메인 - 설계 (0) | 2024.01.12 |
[이론] 3. SOLID 원칙 (0) | 2024.01.09 |
[이론] 2. 좋은 객체 지향 프로그래밍이란? (0) | 2024.01.08 |
[이론] 1. 스프링이란? (0) | 2024.01.07 |
Comments