MVC
- Control : 사용자의 입력을 받는다. (예. OnClickListener)
- View : Control로부터 알림을 받고, 이를 Model과 함께 사용자의 화면을 구성한다.
- Model : Data와 관련된 처리를 담당
Control Model View
사용자 이벤트
데이터가 업데이트가 필요한가? ------ 데이터 갱신 ------------------------ 모델 업데이트 되었는가?
ㅣ
UI 갱신
UI 처리
1. Control에서 입력이 발생
2. 데이터 갱신이 필요한가?
3. 모델을 통해 데이터를 업데이트 확인한다.
4. 모델에서 업데이트 할 내용이 있다면, View로 전달하거나, Control이 View로 전달한다.
5. 변화된 데이터가 있으면, Model로 부터 데이터를 받아온다.
6. 변화된 데이터를 통해 UI를 그린다.
하지만 안드로이드는?
- Activity / Fragment
- View / Control 역할을 함께 한다.
- ex) OnClickListener
MVC - Android
class MainActivity : AppCompatActivity() {
override fun onCreate (savedInstanceState : Bundle? ) {
// ex) 업데이트 버튼
val fab = findViewById(R.id.fab) as FloatingActionButton
fab.setOnClickListener {
// 데이터 갱신 요청
// Model에 접근해서 최신 데이터를 요청
// ex) fun getItems() : arrayList<>()
// 전달받은 items를 이용해 View 갱신
}
}
}
1. Activity의 OnClickListener로 이벤트를 받는다.
2. 데이터 갱신이 필요하면 모델에서 최신 데이터를 받는다.
3. View를 갱신해준다.
MVC를 사용함으로써 이점은?
- 누구나 개발이 편하다.
- 개발기간이 짧을 수 있다.
MVC를 사용함으로써 단점은?
- View에서 모든 걸 할 수 있다 보니 코드 양이 많다.
- 코드 복잡도가 증가할 수 있다.
- View와 Model의 결합도가 높다
- 코드 양에 따라 유지 보수가 어려울 수 있다.
- 컴포넌트별로 테스트가 어렵고, UI 위주의 테스트도 쉽지 않다.
'# 02 > 코틀린' 카테고리의 다른 글
[Kotlin] MVP Model 구성 (0) | 2019.07.15 |
---|---|
[Kotlin] MVP 패턴 소개 2 (0) | 2019.07.15 |
[Kotlin] Architecture (0) | 2019.07.15 |
[Kotlin] SAM Class (0) | 2019.07.15 |
[Kotlin] Generics (0) | 2019.07.15 |