endsharp / study

1 stars 0 forks source link

[20221204] 스프링 핵심 원리 이해1 - 예제 만들기 #4

Open otakijae opened 1 year ago

otakijae commented 1 year ago

객체지향 원칙을 어떻게 지킬지?

public class OrderServiceImpl implements OrderService {

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

    // OrderServiceImpl 을 어쨌든 수정하게 되면, OCP 위반임. interface에만 의존하도록 변경해야함
    private final DiscountPolicy discountPolicy = new RateDiscountPolicy();

    //==> 그래서 이렇게 수정해야함. 근데 이렇게 하면 DiscountPolicy 객체가 할당되지 않아서, null exception 발생. 주입 필요
    private DiscountPolicy discountPolicy;

    @Override
    public Order createOrder(Long memberId, String itemName, int itemPrice) {
        Member member = memberRepository.findById(memberId);
        int discountPrice = discountPolicy.discount(member, itemPrice);

        return new Order(memberId, itemName, itemPrice, discountPrice);
    }

}
jin-ryu commented 1 year ago

프로젝트 생성

비즈니스 요구사항과 설계

회원 도메인 설계

회원 도메인 개발

회원 도메인 실행과 테스트

주문과 할인 도메인 설계

moeun2 commented 1 year ago

https://velog.io/@moeun2/ConcurrentHashMap

sixhustle commented 1 year ago

다음주 까지 공부

otakijae commented 1 year ago

논의 내용 정리