readyvery / readyBack

☕ [유저사이드] 간편 선결제 테이크아웃 서비스, 레디베리 🥤
https://readyvery.com/index.html
MIT License
2 stars 5 forks source link

[!필독] 레포지토리와 퍼사드 #201

Open marinesnow34 opened 5 months ago

marinesnow34 commented 5 months ago

실제 퍼사드 패턴과는 차이가 있습니다.

서버 코드

현재 코드에서는 각 service가 필요한 repository를 불러오는 구조로 돼 있음 예시

public class OrderServiceImpl implements OrderService {
    ...
    private final StoreRepository storeRepository;
    ...
}
public class StoreServiceImpl implements StoreService {
    ...
    private final StoreRepository storeRepository;
    ...
}

그러다 보니 각각의 service코드 내부에 storeRepository.findById(storeId)와 같이 중복 코드를 작성하게 됨

아이디어

퍼사드 패턴의 개념을 가져오게 됨

Screenshot 2024-03-13 at 13 58 52

위의 사진으로 설명하자면 클라이언트퍼사드를 통해서 복잡한 구조를 이해할 필요가 없음

서비스레퍼지토리를 자세히 알 필요가 있을까? 라는 아이디어에서 출발

해결 (?)

예시

public class StoreServiceFacade {
    private final StoreRepository storeRepository;

    public Store getStoreById(Long storeId) {
        return storeRepository.findById(storeId)
            .orElseThrow(() -> new BusinessLogicException(ExceptionCode.STORE_NOT_FOUND));
    }
}

퍼사드클래스를 생성하고 레퍼지토리와 관련된 로직을 구현

현재 진행

marinesnow34 commented 5 months ago