인프런 커뮤니티 질문&답변
섹션3. 상품 상세. 코드느끼기 12:47 질문.
작성
·
12
1
ProductFinder -> ProductUsecase or ProductUsecase<ProductSection>
정의한 곳에 Product 서비스 와 ProductSection 서비스
를 갖고 안에서 작업을 해보는건 어떻게 생각하실까요?
ProductProductSecion 으로 명명하기에는 애매한 부분이 있어, Usecase라는 단어를 써서
중간에 두 서비스만 사용하는 컴포넌트를 하나 두는 것은 어떻게 생각하실까요?
혹은 Delegator 를 써서, 이 두 서비스를 의존해서 처리해야 하는 프로세스를 위임해버리는 타입을 하나 만드는겁니다.
어떻게 생각하실까요?
답변 2
0
안녕하세요 질문 감사드립니다!
우선 질문의 내용이 조금 헷갈립니다
ProductFinder -> ProductUsecase or ProductUsecase<ProductSection>
정의한 곳에 Product 서비스 와 ProductSection 서비스
를 갖고 안에서 작업을 해보는건 어떻게 생각하실까요?
이게 어떤 구조를 말씀하시는 것 인지 모호하네요!
ProductProductSecion 명명이 어떤 배경에서 나오는지도 추가 설명해주시면 좋을 것 같습니다! 🤔
그리고 뒤에 적어주신 UseCase를 만들어서 ProductUseCase 로 정의하고 ProductService, ProductSectionService 를 주입받아 사용하게 하는 구조를 말하신 것이면, 이것 자체를 규칙으로 정의한다면 나쁘지 않아 보입니다, (다만 개인적으로 UseCase 라는 명명을 좋아하진 않는 것 같습니다!, Product 와 ProductSection 두개 가져오는게 같은 개념안에서 UseCase라고 정의하기엔 다소 아쉽다고 생각합니다)
Delegator를 만들어서 구현하는 방법은 지금 상황에서 굳이라는 생각이 들긴합니다!
그 정도의 코드 규모가 아니라는 생각입니다!
질문이 다소 정보가 적고 추상적이라 적절히 답을 했는지 저도 모르겠네요! 관련하여 상세한 내용이나 예시 코드를 적어주셔도 좋을 것 같습니다!
관련해서 추가적인 질문이나 설명은 답글 주시길 바랍니다! 감사합니다!
0
안녕하세요, 인프런 AI 인턴입니다. dragonwaterr님!
질문하신 내용에서, Product와 ProductSection 서비스를 적절하게 관리하기 위한 구조에 대한 고민이 느껴집니다. 두 서비스를 연결하고 처리하는 새로운 컴포넌트를 두는 방법에 대해 여러 가지 접근 방식을 제안하셨네요.
개념 요약 및 추천 접근 방식
중간계층 컴포넌트(Usecase):
Product와ProductSection두 서비스를 활용하는 중간 계층을 두어, 이 계층이 두 서비스의 조합된 동작을 관리하도록 하는 것은 좋은 방법일 수 있습니다. 이를 통해 코드의 응집도를 높이고, 두 서비스 간의 복잡한 로직을 캡슐화할 수 있습니다.
Usecase라는 용어의 활용은, 이 계층이 특정 비즈니스 로직을 가지며 관련된 작업을 관리하는 역할을 명확하게 해줍니다.
Delegator 패턴:
- 별도로
Delegator타입을 활용하여 특정 작업을 위임하는 것도 좋은 접근법입니다. 이는 각 서비스의 책임을 명확히 하면서도 중간 프로세스 관리가 필요할 경우 효과적인 방법입니다.
Delegator를 통해, 두 서비스가 각각의 책임에 충실하면서도, 공동의 목표를 위해 협력할 수 있도록 돕는 역할을 수행하게 됩니다.
- 별도로
이러한 패턴들은 여러분의 서비스가 확장되고 변화할 때 유연하게 대처할 수 있도록 돕습니다. 특히, 비즈니스 로직의 변경이나 확장 시에 이러한 구조적 분리는 코드의 유지보수성을 크게 향상시킵니다.
관련 링크
유사한 주제를 다루는 기존 토론이나 질문을 참고하시기 위해, 다음 링크를 확인해 보세요:
- 상품 상세 컨트롤러 내 서비스 호출 질문: 상품 상세 구현 시 다양한 서비스 호출에 대한 고민을 나눕니다.
이 답변이 여러분의 이해를 돕는데 도움이 되길 바라며, 추가적인 질문이 있으시다면 언제든지 질문해 주세요.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.




