Skip to content

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

@marinesnow34

Description

@marinesnow34

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

서버 코드

현재 코드에서는 각 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));
	}
}

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

현재 진행

  • 모든 레포지토리가 설명한 것 처럼 바뀌지 않음
  • 더 이상 service가 직접적으로 repositoryimport하지 않으면 이슈 close 부탁

Metadata

Metadata

Labels

documentationImprovements or additions to documentation

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions