인프런 커뮤니티 질문&답변

침착맨님의 프로필 이미지
침착맨

작성한 질문수

노래 들으며 실전 프로젝트로 안드로이드 최신 기술을 공부해 보자! - 이름 궁합 편

di 모듈 생성시 class와 object의 차이, usecase

해결된 질문

작성

·

409

0

안녕하세요. 좋은 강의 잘 듣고 있습니다.

제가 일단 프로젝트를 분석하면서 천천히 공부하고 있는데

Daager Hilt를 사용할 때 파이어베이스, 네트워크 모듈은 Object인데

나머지 모듈은 클래스로 작성되어 있더라구요.

Daager Hilt 관점에서 오브젝트와 클래스의 어떤 차이점이 있나요?

 

그리고 메인뷰모델에서 5개의 UseCase를 사용하는데

의존성주입 모듈에는 checkLoveCalculatorUseCase 밖에 없더라구요.

나머지 UseCase는 어떤식으로 주입되는건가요?

 

답변 1

1

안솝우화님의 프로필 이미지
안솝우화
지식공유자

안녕하세요, 침착맨님! 답변이 늦어져 죄송합니다

우선 오브젝트와 클래스로 나눈 점에 대해서 말씀드리자면 싱글톤으로 사용해야 하는 것들은 오브젝트로 그리고 아니면 클래스로 생성했습니다. 예를 들어 NetworkModule은 인스턴스가 여러 개일 필요가 없기 때문에 오브젝트로 만들었습니다.

두 번째 UseCaseModule에 대해서 말씀드리겠습니다, hilt에서 모듈을 만들어주는 이유는 hilt가 어떻게 주입해야 할지 모르는 경우 사용합니다, 예를 들어 외부 라이브러리나 인터페이스 등이 있습니다. 하지만 UseCase는 일반 클래스이기 때문에 모듈이 필요 없습니다.

강의에서 잘못된 내용으로 본의 아니게 혼란을 드려 죄송합니다ㅠㅠ

감사합니다!

침착맨님의 프로필 이미지
침착맨
질문자

네 친절한 답변 감사드립니다!!
제가 두번째 UseCase 부분에 대해서는 이해했습니다!

그런데 첫 번째 말씀하신 부분에서 class로 정의된 모듈(RepositoryModule, DataSourceModule) 에 있는 provide 함수들은 결국 Singlton 어노테이션으로 설정되어 이 또한 싱글톤으로 사용되는 것이 아닌가요? 혹시 제가 알고 있는 내용중 틀린점이 있다면 알려주시면 감사하겠습니다!

안솝우화님의 프로필 이미지
안솝우화
지식공유자

안녕하세요, 침착맨님!

우선 매의 눈으로 잘못된 부분을 찾아주셔서 감사합니다 😎

RepositoryModule, DataSourceModule 이 부분의 @Singleton 또한 침착맨님이 알고 계시는 싱글톤으로 사용하려면 붙이는 어노테이션 입니다! 싱글톤으로 사용할 필요가 없기 때문에 두 모듈 모두 어노테이션을 제거해 주시면 됩니다!

혼란을 드려죄송합니다, 감사합니다!

침착맨님의 프로필 이미지
침착맨
질문자

친절한 답변 감사드립니다. 

침착맨님의 프로필 이미지
침착맨

작성한 질문수

질문하기