// 인터페이스 정의
package hello.core.discount;
import hello.core.member.Member;
public interface DiscountPolicy {
/**
@return
**/
int discount(Member member, int price);
// [변경] 정률 % 할인 정책
package hello.core.discount;
import hello.core.member.Grade;
import hello.core.member.Member;
public class RateDiscountPolicy implements DiscountPolicy {
private int discountPercent = 10;
@Override
public int discount(Member member, int pride) {
if (member.getGrade() == Grade.VIP) {
return price * discountPercent / 100;
} else {
return 0;
}
}
}
public class OrderServiceImpl implements OrderService {
// private final DiscountPolicy discountPolicy = new FixDicountPolicy();
private final DiscountPolicy discountPolicy = new RateDiscountPolicy();
역할과 구현을 분리했다.