Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
marinesnow34 opened this issue Mar 13, 2024 · 1 comment
Open

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

marinesnow34 opened this issue Mar 13, 2024 · 1 comment
Assignees
Labels
documentation Improvements or additions to documentation

Comments

@marinesnow34
Copy link
Member

marinesnow34 commented Mar 13, 2024

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

서버 코드

현재 코드에서는 각 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 부탁
@marinesnow34
Copy link
Member Author

  • 코드를 작성하다 보니 퍼사드퍼사드를 불러오는 경우가 생김
  • 순환 참조의 위험이 있음

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
documentation Improvements or additions to documentation
Projects
None yet
Development

No branches or pull requests

2 participants