FireDrago

[TIL] 25/01/06 본문

회고

[TIL] 25/01/06

화이용 2025. 1. 6. 20:06

운동

4.45km 33분03초 7.26 페이스

-> 안쉬고 4.45km 완주했다. 당분간은 이 정도 운동 강도를 유지해보자

공부

- 최종 코딩테스트 (java-attendance) 출석 확인, 출석 수정 기능 구현

- 스프링 복습

  • 의존성 주입 (DI)을 통해 클라이언트 코드는 로직의 실행만 담당한다.
  • 객체의 생성과 의존관계 설정은 스프링이 담당한다. (흐름 제어 -> 프레임 워크와 라이브러리의 차이)
  • 이를통해 SRP(단일 책임 원칙), DIP(의존성 역전 원칙), OCP(개방 폐쇄 원칙)에 맞는 개발이 가능해진다.
public class OrderServiceImpl implements OrderService {

    private final MemberRepository memberRepository;
    private final DiscountPolicy discountPolicy;

    public OrderServiceImpl(MemberRepository memberRepository, DiscountPolicy discountPolicy) {
        this.memberRepository = memberRepository;
        this.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);
    }
}
@Configuration
public class AppConfig {

    @Bean
    public MemberService memberService() {
        return new MemberServiceImpl(memberRepository());
    }

    @Bean
    public OrderService orderService() {
        return new OrderServiceImpl(
                memberRepository(),
                discountPolicy());
    }

    @Bean
    public MemberRepository memberRepository() {
        return new MemoryMemberRepository();
    }

    @Bean
    public DiscountPolicy discountPolicy() {
        return new FixDiscountPolicy();
    }
}

 

'회고' 카테고리의 다른 글

[TIL] 25/01/14  (0) 2025.01.14
[TIL] 25/01/09  (0) 2025.01.09
[TIL] 25/01/08  (0) 2025.01.08
[TIL] 25/01/07  (0) 2025.01.07
[10/27] 오늘의 회고  (1) 2024.10.27