해결된 질문
23.08.15 16:18 작성
·
185
0
안녕하세요. 수업 잘 듣고 있습니다.
로그인 관련 부분을 구현하다가 궁금증이 생겨 질문드립니다.
get 방식으로 약국의 마스크 수량을 가져오는 것은
약국 ViewModel
약국 UseCases
fetch 마스크 수량 UseCase
마스크 Repository
마스크 (Local or Remote) Data Source
위의 과정으로 이해를 했습니다.
그런데 (학생)로그인 부분을 구현한다고 가정하면
로그인 ViewModel
로그인 UseCases
fetch 학교목록 UseCase
학교목록 Repository
학교목록 (Local or Remote) Data Source
post 로그인 입력정보 UseCase
로그인 Repository
로그인 Remote Data Source
이러한 흐름으로 진행하게 되는데 여기서 질문이 있습니다.
로그인 할 때 서버에서 제공하는 학교 목록을 받고 그 목록을 토대로 로그인을 하는 방식일 때 UseCase 를 저런 방식으로 설정하면 되는 것인지
repository 하면 뭔가 특정 데이터에 대한 CRUD 를 의미하는 것 같은데 로그인 정보를 제출하는 것도 이런식으로 처리해도 되는지
궁금합니다!
답변 1
0
2023. 08. 15. 21:05
Repository는 알고 계신대로 CRUD 느낌이 강합니다.
로그인은 학생 정보를 활용하는 UseCase이므로 로그인 UseCase 는 학생 Repository 와 학교 Repository 를 활용하는 모양이 될 것 같습니다.
필요에 따라서는 학교목록얻기 UseCase가 있을 수도 있을 것 같습니다.
학교목록얻기 UseCase가 있다면 로그인 UseCase 가 학교목록얻기 UseCase와 학생 Reposiotry를 활용해도 됩니다.
UseCase는 다른 UseCase나 Repository를 활용하면 됩니다.
4번의 post 로그인 입력정보 UseCase는 좀 이상합니다. UseCase는 기능 이름을 붙이고 추상화하는 용도이므로 로그인, 로그아웃, 탈퇴, 회원정보변경 등이 UseCase에 적합합니다.
post 처럼 기술을 구체적으로 언급할 필요는 없습니다.
5번 로그인 Repository 의 경우에는 UseCase 가 없을 때는 괘찮지만, 로그인 UseCase 가 있다면 UserRepository 또는 StudentRepository 같이 기능보다는 특정 데이터의 저장소 느낌으로 가져가는 것이 좋습니다.
아키텍처는 정답이 없습니다. 프로젝트의 성격에 따라 조금씩 달라질 수 있기 때문에 제 의견은 참고만 하시면 될 것 같습니다.
2023. 08. 15. 21:32
이해하는데 큰 도움이 되었습니다.
감사드립니다.