반응형
[안드로이드] 오락실용 코인 아님. 코틀린용 의존성 주입, Koin
Android, iOS 2021. 3. 7. 04:21

DI(의존성 주입)라고 들어보았나? 의존성 주입을 하게 되면 아래와 같은 이점을 얻게 된다. 의존 관계 설정이 실행시에 이루어지므로 컴포넌트 간의 결합도를 낮춘다. 코드 재사용성이 증가한다. 단위 테스트의 편의성을 높여 준다. 스코프를 사용하여 객체를 관리할 수 있다. 그래도 모르겠다면 아래를 읽어보자. [MVVM 정복] 4. 어렵고 이해도 잘 안되는 DI, 그리고 Koin 이번편에서도 코드를 보면서 학습하길 권한다. conquerex/mvvm-template MVVM 학습과 앞으로 활용을 위한 템플릿. Contribute to conquerex/mvvm-template development by creating an account on GitHub. github.. devvkkid.tistory.com..

안드로이드 맨땅에 Repository 박기
Android, iOS 2021. 1. 13. 19:01

Repository. 사전적 의미부터 시작해보자. repository 미국식 [rɪˈpɑːzətɔːri] 영국식 [rɪˈpɒzətri] 1. (어떤 것의 대량) 저장소 2. (지식·정보 등의) 보고(寶庫) - 출처 : 네이버 사전 결국 레포지토리(혹은 리포지토리)는 무엇을 저장하기 위해 존재한다. 안드로이드에 아키텍처를 적용하면서 자주 보게되는 Repository. 이 레포지토리를 이해하려면 Repository 패턴도 같이 이해하는 것이 좋다. Repository 패턴 타 블로그에서 Repository 패턴을 어떻게 정의했는지 가지고 와 보았다. 데이터 출처(로컬 DB인지 API응답인지 등)와 관계 없이 동일 인터페이스로 데이터에 접속할 수 있도록 만드는 것을 Repository 패턴이라고 한다. 레포지..

[MVVM 정복] 7. 완성한 코드로 MVVM 분석해보기
Android, iOS 2020. 5. 18. 17:52

완성한 코드는 다음과 같다. (내가 드디어 해냈다. 캄.동.) https://github.com/conquerex/mvvm-template conquerex/mvvm-template MVVM 학습과 앞으로 활용을 위한 템플릿. Contribute to conquerex/mvvm-template development by creating an account on GitHub. github.com 앞으로 개발을 한다면 다음과 같은 시나리오일 것이다. (일종의 복습) class MainActivity : BaseActivity() { // 생략 override val viewModel: MainViewModel by viewModel() // 생략 override fun initDataBinding() { v..

[MVVM 정복] 6. RecyclerView 적용해보기 (feat. 코틀린 함수)
Android, iOS 2020. 5. 18. 17:51

이번편에서도 코드를 보면서 학습하길 권한다. conquerex/mvvm-template MVVM 학습과 앞으로 활용을 위한 템플릿. Contribute to conquerex/mvvm-template development by creating an account on GitHub. github.com 이번편까지 하면 코드는 다 입력한 것이다. 물론 MVVM을 정복한 것은 아니니 계속 긴장하고 있자. (나 스스로 한테 한 얘기) 먼저 MainSearchRecyclerViewAdapter를 만들자. 코드는 역시 내 Github에 있다. 블로그 포스팅 번호와 커밋 메시지의 번호가 동일하니 참고해서 학습하면 된다. 어댑터 만들면서 item_main_image, ic_image_black_24dp, item_ma..

[MVVM 정복] 5. View에 Koin으로 의존성 주입하기
Android, iOS 2020. 5. 18. 17:51

이번편에서도 코드를 보면서 학습하길 권한다. conquerex/mvvm-template MVVM 학습과 앞으로 활용을 위한 템플릿. Contribute to conquerex/mvvm-template development by creating an account on GitHub. github.com 우선 MainActivity를 준비하자. 물론 activity_main.xml도 같이 세팅하자. 여기서 DataBinding이 나온다. 하지만 생각보다 단순한 개념이기에 참고 링크만 남겨둔다. MVVM에 데이터바인딩이 필수라고 하는 분이 있고 그렇지 않다고 얘기하는 분도 있었다. 필수라고 하는 분은 의존성이 낮아짐을 근거로 삼고, 필수가 아니라는 분은 디자인패턴적으로 봤을 때 없어도 되기 때문이라고 한다. ..

[MVVM 정복] 4. 어렵고 이해도 잘 안되는 DI, 그리고 Koin
Android, iOS 2020. 5. 18. 17:50

이번편에서도 코드를 보면서 학습하길 권한다. conquerex/mvvm-template MVVM 학습과 앞으로 활용을 위한 템플릿. Contribute to conquerex/mvvm-template development by creating an account on GitHub. github.com DI(Dependency injection)가 "의존성 주입"이라는 의미인 것은 많은 분들이 알고 있다. 그런데 의존성 주입이 무엇이냐고 물어보면 제대로 답할 수 있는 사람이 얼마나 될까? 그래서 알아보았다. DI, 넌 누구냐. 일단 의존성이 무엇인지 알아보자. 두 모듈의 연결, 두 클래스의 관계 의존성이 크다 == 결합도가 높다 '의존성이 큰게 왜??'라는 생각이 들 수 있다. 의존성이 크게 되면 독립성은..

[MVVM 정복] 3. Model과 리액티브 프로그래밍(Rx)
Android, iOS 2020. 5. 18. 17:47

이번편에서도 코드를 보면서 학습하길 권한다. (나도 학습하면서 포스팅 중) Model Model은 View에 표시할 데이터를 의미한다. DataModel이라고도 하며 DB, Network, SharedPreference 등 다양한 데이터 소스로부터 필요한 데이터를 준비한다. ViewModel에서 데이터를 가져갈 수 있게 데이터를 준비하고 그에 대한 "이벤트"를 보낸다. DataModel, DataModelImpl DataModel를 interface로 만들어서 구현부(DataModelImpl)를 분리시켰다. ViewModel이 데이터를 가지고 갈 수 있도록 준비되어 있다. 데이터를 가지고 올 소스를 API로 받아야하기에 KakaoSearchService를 구현했다. API의 파라미터 중 정해진 값만 전달..

[MVVM 정복] 2. SnackbarMessage, BaseViewModel, BaseActivity
Android, iOS 2020. 5. 18. 17:46

코드는 내 깃헙을 참고하면 된다. 커밋 로그와 블로그 포스팅 제목이 유사하게 따라간다. SnackbarMessage SnackbarMessage는 SingleLiveEvent이다. 앞 포스팅에 있는 그 SingleLiveEvent이다. Snackbar에 보여주고 싶은 메세지가 있다면 이 이벤트의 value에 원하는 메시지를 담으면 된다. class SnackbarMessage : SingleLiveEvent() { fun observe(owner: LifecycleOwner, observer: (Int) -> Unit) { super.observe(owner, Observer { it?.run { observer(it) } }) } } 위의 super.observe는 SingleLiveEvent에 있는 ..

[MVVM 정복] 1. LiveData와 SingleLiveEvent
Android, iOS 2020. 5. 18. 17:44

MVVM에서 데이터가 변경되는 시점에 UI가 변경되도록 하기 위해서 LiveData를 사용한다. 그런데 LiveData의 특성상 시도때도 없이 이벤트를 발생시킬 수 있기 때문에 SingleLiveEvent라는 것을 보통 만들어 쓴다. 여기서는 이 SingleLiveEvent의 용도를 확인해보자. LiveData. Data의 변경을 관측할 수 있는 (데이터가 변경되었을 때 감지가 됨) Data Holder 클래스. (데이터를 가지고 있음) 변경을 감지할 수 있는 이유는 컴포넌트의 생명주기를 LiveData가 알고 있기 때문이다. LiveData는 Observer 패턴을 가지기 때문에 데이터의 변경이 있을 시 콜백으로 받아서 처리할 수 있다. 옵저버 등록과 관련하여 다른 블로그에서 설명한 글을 가지고 와 보..

[MVVM 정복] 0. 어떤 순서로 개발할 것인가
Android, iOS 2020. 5. 18. 17:43

MVVM을 공부하려면 알아야하는 것이 한두개가 아니다. LiveData, ViewModel, Rx 등등 무엇부터 손을 대야할지 감도 잡히지 않는다. 나 역시 그렇다. 중심이 되는 자료가 필요할테고 거기서 시작하기로 했다. https://github.com/hongbeomi/HarryPotter https://github.com/5seunghoon/Kotlin-MVVM-Sample 포스팅 순서 1. LiveData와 SingleLiveEvent 2. SnackbarMessage, BaseViewModel, BaseActivity 3. Model과 리액티브 프로그래밍(Rx) 4. 어렵고 이해도 잘 안되는 DI, 그리고 Koin 5. View에 Koin으로 의존성 주입하기 6. RecyclerView 적용해보..

728x90
반응형