-
Notifications
You must be signed in to change notification settings - Fork 3
8월 10일 개발 로그
HyeonSik Choi edited this page Aug 10, 2024
·
6 revisions
문! 제! 발! 생! PriceManager가 가격 관리에 대한 책임을 가지고 있음
- 가격 관리 정책은 PricePolicy에 저장되어있는데, 여기에 가격 변동 시간?이 있음.
- PriceManager는 해당 시간 단위로 가격을 변동시켜야 한다.
- 문제는 외부에서 PriceManager.changePrice를 호출할 때에만 가격 변동 동작을 할 수 있다.
- Auction은 데이터인가 객체인가?
롤백하고 다시 이걸로 시작!
빅데시멀 사용하는 투두를~
@Getter
public class PercentagePricePolicy implements PricePolicy {
private final double discountRate;
public PercentagePricePolicy(double discountRate) {
this.discountRate = discountRate;
}
@Override
public void validate(long price) {
long nextPrice = (long) (price * (100 - discountRate)); // <- 이 부분의 손실 발생 가능
if (nextPrice <= 0) {
throw new BadRequestException(
String.format("상품 원가는 할인율을 적용한 가격보다 커야 합니다. 상품 원가: %d, 할인율: %f", price, discountRate),
ErrorCode.A010);
}
}
}
뿌듯한 주말 코딩 ^_^