[TIL #22] 키오스크 DIP, OCP 원칙 지키기

2024. 11. 22. 21:35·개발/내일배움캠프 TIL

각 클래스에서 직접 생성된 객체 분리하기

private final MenuItemRepository menuItemRepository = new LocalMenuItemRepository();

 

메뉴를 찾아서 출력 클래스로 전달할 Service 클래스에서 Repository에 저장된 데이터와 메서드를 사용하기 위해 Service 클래스에서 객체를 생성해서 직접적으로 구현 객체를 주입하고 있다. DIP(의존관계 역전 원칙)를 지키기 위해 외부에서 주입하도록 변경하였다.

 

package Kiosk;
import Kiosk.menu.LocalMenuItemRepository;
import Kiosk.menu.MenuService;
import Kiosk.menu.MenuServiceImpl;

public class KioskConfig {
    // Kiosk에 MenuService을 주입
    public Kiosk kiosk() {
        return new KioskImpl(menuService());
    }
    //MenuService에 LocalMenuItemRepository를 주입
    public MenuService menuService() {
        return new MenuServiceImpl(new LocalMenuItemRepository());
    }
}

 

 KioskConfig kioskConfig = new KioskConfig();
    // MenuServiceImpl이 MenuItemRepository 인터페이스에 의존
    private final MenuItemRepository menuItemRepository;
    // 생성자를 통해 menuItemRepository를 주입받음
    public MenuServiceImpl(MenuItemRepository menuItemRepository) {
        this.menuItemRepository = menuItemRepository;
    }

 

Kiosk에서 Service의 메뉴 출력해주는 메서드를 사용하기 위해 menuService 객체를 주입하고, MenuService에서 Repository의 데이터와 메서드를 사용하기 위해 LocalMenuItemRepository를 주입하여 만약 나중에 데이터베이스가 변경된다면 Config 클래스만 수정하여 Service는 건들 필요 없도록 하였다.

 

 

'개발 > 내일배움캠프 TIL' 카테고리의 다른 글

[TIL #25] 키오스크 과제 리팩토링에 대한 고민  (0) 2024.11.27
[TIL #23] 싱글톤 패턴에 대하여  (0) 2024.11.23
[TIL #21] 키오스크 과제 설계 및 중간 리팩토링  (0) 2024.11.21
[TIL #20] 의존관계 주입 DI 와 제어의 역전 IoC  (0) 2024.11.21
[TIL #19] 좋은 객체 지향 설계의 5가지 원칙 (SOLID)  (0) 2024.11.19
'개발/내일배움캠프 TIL' 카테고리의 다른 글
  • [TIL #25] 키오스크 과제 리팩토링에 대한 고민
  • [TIL #23] 싱글톤 패턴에 대하여
  • [TIL #21] 키오스크 과제 설계 및 중간 리팩토링
  • [TIL #20] 의존관계 주입 DI 와 제어의 역전 IoC
BigChoi93
BigChoi93
이곳은 저의 성장과정과 개인적인 생각을 담기 위한 공간입니다.
  • BigChoi93
    Donologue
    BigChoi93
  • 전체
    오늘
    어제
    • 분류 전체보기 (61)
      • 개발 (53)
        • Javascript (2)
        • 내일배움캠프 TIL (41)
        • 개발일기 (4)
        • Java (2)
        • Spring (1)
        • Sql (1)
      • 일상 (0)
      • 사진 (1)
        • 포토샵 (1)
  • hELLO· Designed By정상우.v4.10.1
BigChoi93
[TIL #22] 키오스크 DIP, OCP 원칙 지키기
상단으로

티스토리툴바