10주차 2일 뷰모델
개요
뷰 모델은 안드로이드 스튜디오에서 사용할 수 있는 MVVM모델이다
안드로이드 스튜디오의 각 정보는 캡슐화되어있기 때문에 데이터 접근 방식이 무척이나 힘들다.
당장 액티비티/액티비티 프래그먼트/액티비티간의 정보 통신만 해도 끔찍하다고 생각이 들 때가 있다.
이러한 문제를 해결하기 위해 나온 것이 바로 뷰 모델이다.
1. 뷰 모델에 대하여
뷰 모델은 m-v-v-m모델이다
model
view
viewmodel
mdoel
뷰는 뷰모델을 알지만
뷰모들엔 뷰를 모른다
뷰모델은 모델을 알지만모델은 뷰모델을 모른다
이런 구조를 통해 뷰모델과 모델이 뷰로부터 완전히 독립된 형태를 가지게된 구조가 완성된다.
뷰 : 뷰는 말 그대로 평소에 다루던 view다.
뷰 모델 : 뷰 모델은 뷰가 사용할 메서드와 필드를 구현하고 뷰에게 상태 변화를 알리는 것이다.즉 뷰는 뷰모델을 옵저빙한다.
2. 뷰 모델 방어적 코딩의 의미
private val _todoList = MutableLiveData<ArrayList<TodoModel>>()
val todoList : LiveData<ArrayList<TodoModel>> get()= _todoList
// val -> getter만 커스텀 가능
// 현재 코드에서는 =/get()=은 성능적인 측면에서는 차이가 발생하지 않는다.
// 결론부터 말하면 지금같은 경우에는 똑같음
// 코틀린에서 할당은 get을 부르는 것
// default get을 부르는 것. -> 값을 return하는 기능
// 하지만 이 경우의 차이점은 액티비티가 호출할 때 getter의 경우 함수 자체가 실행이 됨
// get() = _todoList는 호출할 때마다 get() 함수를 실행하게됨
// 이 경우에는 getter의 커스텀이 자유로워짐
// = _todoList의 getter가 직접 할당되어 실행이 항상 됨
// 둘 중 상황에 맞는 것을 알맞게 선택하는 것이 중요함.
또한,해당 방어적 코드를 작성함으로써 협업 시 안정성을 높힐 수 있다.
누군가가 내 뷰모델에 접근해야할 때 접근 방식을 제한해줄 수 있는 코드이기 때문이다.
참고 사이트
https://todaycode.tistory.com/33
안드로이드 View Model(뷰 모델)을 공부해보자!
1. ViewModel 1-1. ViewModel 이란? 1-2. 탄생 배경 1-3. 사용하는 이유 2. 사용법 2-1. gradle 추가 2-2. Layout 파일 2-3. ViewModel 파일 2-4. Activity 파일 3. 주의할 점 3-1. 참조 1. ViewModel 1-1. ViewModel 이란? Clean Architectur
todaycode.tistory.com
https://onlyfor-me-blog.tistory.com/310
[MVVM] MutableLiveData와 LiveData 차이
MVVM으로 코드를 리팩토링하던 중 LiveData와 MutableLiveData라는 이름이 비슷한 두 클래스를 알게 됐다. 앞에 Mutable이 붙었을 뿐이고 사용법도 비슷하지만 둘의 차이를 알고 넘어가고 싶어서 이 포스
onlyfor-me-blog.tistory.com
https://gift123.tistory.com/59
Kotlin (7) getter 와 Assignment (=)의 차이
Kotlin 예제들을 보다보면 get() 통해서 해당 프로퍼티에 직접적으로 값을 대입하지 않고(=) get()을 통해 다른 객체의 값을 사용하는 경우가 있습니다. 예를들어, 안드로이드 스튜디오에서 제공하는
gift123.tistory.com
https://zladnrms.tistory.com/140
[Android/kotlin] List vs MutableList vs ArrayList vs LinkedList
📌 List vs MutableList vs LinkedList vs ArrayList 🐳 List와 MutableList의 차이 Kotlin은 많은 변수들을 Mutable 여부로 나누고 있다는 것을 잊지말자. List Collcection에서도 List와 MutableList의 차이는 Read-Only인지 아
zladnrms.tistory.com
https://salix97.tistory.com/235
[Kotlin] 안드로이드 - ArrayList 와 mutableListOf 의 차이
ArrayList 와 mutableListOf 의 차이 val a = mutableListOf() val b = ArrayList() Kotlin 공홈에 가보면, ArrayList 는 MutableList 인터페이스를 상속받은 구현체임을 알 수 있다. class ArrayList : MutableList, RandomAccess 명시적
salix97.tistory.com