클린아키텍쳐와 mvvm을 공부하고있는데
오리지널 클린아키텍쳐와 안드로이드에서의 클린아키텍쳐가 조금 다르더군요.
그런데 안드로이드에서의 클린아키텍쳐와 mvvm의 차이점이 궁금합니다.
이 둘은 엄연히 다른건가요?
이제 글들을 읽고 샘플 코드도 대강 어떻게 되어있는지 막 보고는 있는데
클린아키텍쳐기반과 단순 mvvm으로 이루어진 코드가 조금씩 다르더라구요.. 샘플코드라 규모가 작은탓인지..
예를들면
클린아키텍쳐에서의 샘플코드들은 usecase를 다 나누고
viewmodel 클래스에서 usecase들에 의존적(?)인 코드를 짜던데요..
class MovieSearchViewModel(
private val getMoviesUseCase: GetMoviesUseCase,
private val getPagingMoviesUseCase: GetPagingMoviesUseCase,
private val getLocalMoviesUseCase: GetLocalMoviesUseCase,
private val networkManager: NetworkManager
)
이런식으로요,
그런데 mvvm으로 만들었다는 코드들을 보면
public class AuthViewModel extends AndroidViewModel {
private AuthenticationRepository repository;
....
}
이런식으로 repository를 사용하더라구요. (번외로 이건 의존성?이아니죠? 직접생성하는건 의존성이아니라고 하던데..)
암튼 이렇게 차이점이 있던데.. 이건 대충의 예시이구요. mvvm 패턴 샘플 코드를
보면 클린 아키텍쳐에서는 usecase 도 나누고 , repository도 인터페이스와 respotoryImpl 을 나누어 사용하고
막 그러던데..
좀 헷갈리더라구요 클린아키텍쳐와 mvvm을 묶어서 생각하려니.. 어떻게 다를까요?
++)참고로 파이어베이스 사용하려고 합니다. 대부분의 클린아키텍쳐 샘플코드가
로컬 DB(Room, SQL lite) 혹은 Remote DB (Retrofit? Http?) 등이런것을 사용해서 좀달라서 그런데 파이어베이스를 사용하면 클린아키텍쳐가 좀 달라져야한다는것이 있을까요?