24
Flux in Android 2015.12.22 드라마앤컴퍼니 안드로이드 개발자 이승민

Flux in Android

  • Upload
    -

  • View
    450

  • Download
    2

Embed Size (px)

Citation preview

Page 1: Flux in Android

Flux in Android

2015.12.22

드라마앤컴퍼니 안드로이드 개발자 이승민

Page 2: Flux in Android

MVC

Controller Model View

Click 등 이벤트

비지니스 로직

Page 3: Flux in Android

MVC in Android

Controller

ModelView

Activity

Event

Page 4: Flux in Android

Activity

View 레퍼런스를 직접 잡고 모델에서 수행한 비지니스 로직을 View 에 반영한다 (Controller)

Page 5: Flux in Android

Model

비지니스 모델을 수행한다

Page 6: Flux in Android

결과

Page 7: Flux in Android

MVC

양방향

간단한 어플리케이션에서 직관적이고 좋다

Page 8: Flux in Android

MVC 문제점

양방향이기 때문에 뷰와 모델이 많아질수록 기하급수적으로 복잡해진다

Page 9: Flux in Android

하나의 View에 하나의 Event

Page 10: Flux in Android

하나의 View에 두개의 Event

Page 11: Flux in Android

하나의 View에 세개의 Event

Page 12: Flux in Android

두개의 View에 세개의 Event

비지니스 로직이 간단하고 모여있기 때문에 쉬워보이지만, 이벤트를 발생위치와 뷰 위치가 떨어져 있을 경우 매우 빠르게 복잡해진다

Page 13: Flux in Android

Flux

데이터를 뷰와 분리하여 단방향으로 흐르게 하자

Page 14: Flux in Android

Action & Dispatcher

Increase Action

Decrease Action

Multiply Action

Dispatcher

View로부터 받은 Action을 Dispatcher가 뿌려준다

Page 15: Flux in Android

Store

Singleton instance 데이터를 Static하게 갖고 있다

Dispatcher로부터 Action을 받아 데이터를 조작한다 조작 후 데이터가 바뀌었음을 알리는 Action을 생성한다

Page 16: Flux in Android

View

View가 바라보는 데이터의 Action이 감지되면, invalidate한다

Page 17: Flux in Android

결과

Page 18: Flux in Android

MVC vs Flux

View Event

View

데이터를 변화시키고 View에 적용한다 데이터만 변화시킨다Action & DispatcherController

vsvs

vsView 자체로써 다른 역할은 하지 않는다 데이터 변화를 감지해 변화한다

Page 19: Flux in Android

논란 1

위와같이 수많은 VIew와 Model이 관계를 맺는 경우는 적다

Flux가 굳이 필요한가?

Page 20: Flux in Android

논란 2

MVC는 하나의 Model에 대해 컨트롤러가 하나일 필요가 없다

Controller

Model

View

View

View

Controller

Controller

여러개의 View 이벤트를 받아, 하나의 데이터를 조작하여,

View를 변화시키는, Dispatcher와 Store는 결국 Controller와 비슷하다

MVC를 Event 기반으로 바꾸어서 이름만 새로 붙였을 뿐이다!

Page 21: Flux in Android

Flux의 의미

이벤트 기반으로 데이터와 뷰를 조작하는 아이디어는 패턴에 대한 지식을 적게 요구한다.

데이터를 한 곳에서 Static하게 관리하는 아이디어는 Preference와 DB를 쓰지 않고도 편하게 데이터를 전달할 수 있도록 한다

Controller가 아니라 데이터를 바라보며 View를 관리하는 관점은 변화를 쉽게 적용하도록 한다.

이벤트 기반

데이터 기반

1

2

1

Page 22: Flux in Android

단점

이벤트를 한번 거쳐야 하는만큼 직관적이지 못하다

가독성이 낮다

1

2

Page 23: Flux in Android

결론

기본적으로 MVC를 지키되,

여러 View와 엮인 Model의 경우에는 Flux를 혼용한다 (ex : Master, Master Stack, 교환방 등)

Page 24: Flux in Android

감사합니다