스프링 (할인정책 , 주문)

손원진·2023년 3월 29일
0

[SPRING]

목록 보기
10/15

//discount 
package hello.core.discount;

import hello.core.member.Member;

public interface DiscountPolicy {

    /*
     * @return 할인 대상 금액
     */

    int discount(Member member, int price);


}

//implements 
ackage hello.core.discount;

import hello.core.member.Grade;
import hello.core.member.Member;

public class FixDiscountPoilicy implements DiscountPolicy{

    private int discountFixAmount = 1000; //1000 원 할인
    @Override
    public int discount(Member member, int price) {
        if(member.getGrade() == Grade.Vip){
            return discountFixAmount;
        } else {
            return 0;
        }

    }
}

주문

ackage hello.core.order;

public class Order {

    private Long memberId;
    private String itemName;
    private int itmPrice;
    private int discountPrice;

    public Order(Long memberId, String itemName, int itmPrice, int discountPrice){
        this.memberId = memberId;
        this.itemName = itemName;
        this.itmPrice = itmPrice;
        this.discountPrice = discountPrice;
    }

    public int calculatePrice(){
        return itmPrice - discountPrice;

    }
    public String getItemName() {
        return itemName;
    }

    public void setItemName(String itemName) {
        this.itemName = itemName;
    }

    @Override
    public String toString() {
        return "Order{" +
                "memberId=" + memberId +
                ", itemName='" + itemName + '\'' +
                ", itmPrice=" + itmPrice +
                ", discountPrice=" + discountPrice +
                '}';

    }
}
//주문서비스 interface 

package hello.core.order;

public interface OrderServices {

    Order createOrder(Long memberId, String itemName , int itmPrice);


}


//serviceimpl 
package hello.core.order;

import hello.core.discount.DiscountPolicy;
import hello.core.discount.FixDiscountPoilicy;
import hello.core.member.Member;
import hello.core.member.MemberRepository;
import hello.core.member.MemoryMemberRepository;

public abstract class OrderServiceImpl implements  OrderServices{

    private  final MemberRepository memberRepository = new MemoryMemberRepository();
    private final DiscountPolicy discountPolicy = new FixDiscountPoilicy();

    @Override
    public Order createOrder(Long memberId, String itemName, int itmPrice) {

        Member member = memberRepository.findById(memberId);
        int disCountPrice = discountPolicy.discount(member, itmPrice);

        return new Order(memberId, itemName, itmPrice, disCountPrice);
    }
}



 
profile
매일 한 걸음

0개의 댓글