본문 바로가기

# 02/코틀린

[Kotlin] MVC 패턴 소개 1

반응형

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