Skip to content

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

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
No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions