🙂2022.11.22

일일 회고 98일차

할일 및 한일

경험 및 배움

오늘은 오후에 이동통신 프로토콜 정리를 배운 진도 까지 마무리하고, 밤에는 스프링 강의 수강을 하였다.

스프링 핵심 원리 - 기본편

지난번에 있었던 문제에 대한 해결 방법은 누군가가 클라이언트인 OrderServiceImplDiscountPolicy 의 구현 객체를 대신 생성하고 주입해주어야 했었다.

따라서 강의에 나온 해결법은, 애플리케이션의 전체 동작 방식을 구성하기 위해, 구현 객체를 생성하고, 연결하는 책임을 가지는 별도의 설정 클래스를 만드는 것이였다.

따라서 AppConfig 라는 클래스를 생성 하고, 이 클래스에서는 애플리케이션의 동작에 대한 구현체들을 만드는 코드 들을 넣었다.

public MemberService memberService() {
    return new MemberServiceImpl(new MemoryMemberRepository());
}

public OrderService orderService() {
    return new OrderServiceImpl(new MemoryMemberRepository(), new FixDiscountPolicy());
}

그 후, OrderServiceImplMemberServiceImpl 에서는 생성자를 통한 의존 관계 주입을 해주어서, 결과적으로는 인터페이스에만 의존을 하면서도 구현체를 생성할 수 있어서 코드가 문제 없이 실행될 수 있었고, DIP 또한 지킬 수 있었다.

public OrderServiceImpl(MemberRepository memberRepository, DiscountPolicy discountPolicy) {
    this.memberRepository = memberRepository;
    this.discountPolicy = discountPolicy;
}

개선 및 목표

  • 내일은 예비군이 있어 오후 공부는 진행하지 못할 것 같다. 밤에 열심히 하자!

Last updated