현재 코드에서는 각 service가 필요한 repository를 불러오는 구조로 돼 있음
예시
public class OrderServiceImpl implements OrderService {
...
private final StoreRepository storeRepository;
...
}
public class StoreServiceImpl implements StoreService {
...
private final StoreRepository storeRepository;
...
}
그러다 보니 각각의 service코드 내부에 storeRepository.findById(storeId)와 같이 중복 코드를 작성하게 됨
아이디어
퍼사드 패턴의 개념을 가져오게 됨
위의 사진으로 설명하자면 클라이언트는 퍼사드를 통해서 복잡한 구조를 이해할 필요가 없음
서비스는 레퍼지토리를 자세히 알 필요가 있을까? 라는 아이디어에서 출발
해결 (?)
예시
public class StoreServiceFacade {
private final StoreRepository storeRepository;
public Store getStoreById(Long storeId) {
return storeRepository.findById(storeId)
.orElseThrow(() -> new BusinessLogicException(ExceptionCode.STORE_NOT_FOUND));
}
}
퍼사드클래스를 생성하고 레퍼지토리와 관련된 로직을 구현
현재 진행
모든 레포지토리가 설명한 것 처럼 바뀌지 않음
더 이상 service가 직접적으로 repository를 import하지 않으면 이슈 close 부탁
실제 퍼사드 패턴과는 차이가 있습니다.
서버 코드
현재 코드에서는 각
service
가 필요한repository
를 불러오는 구조로 돼 있음 예시그러다 보니 각각의
service
코드 내부에storeRepository.findById(storeId)
와 같이 중복 코드를 작성하게 됨아이디어
퍼사드 패턴
의 개념을 가져오게 됨위의 사진으로 설명하자면
클라이언트
는퍼사드
를 통해서 복잡한 구조를 이해할 필요가 없음서비스
는레퍼지토리
를 자세히 알 필요가 있을까? 라는 아이디어에서 출발해결 (?)
예시
퍼사드
클래스를 생성하고레퍼지토리
와 관련된 로직을 구현현재 진행
service
가 직접적으로repository
를import
하지 않으면 이슈 close 부탁