Robotlegs as3 injector로 뷰와 데이터 분리 하기

Adobe Flash 2011. 9. 13. 02:17
반응형
이전 포스팅에서 뷰와 모델간의 분리에 대해 이야기한적이 있다.

http://smilejsu.tistory.com/entry/뷰와-데이터의-분리 

로봇다리 프레임웍에서는 놀랄만큼 간단하게 이를 분리 시켜주고 있다.

그래서 injector에 대해 조금더 공부해볼 필요가 있다. 

예를들어 본다.

상점이 있고 상점에는 몇몇개의 아이템들이 있다고 가정한다.

아이템들에는 제각각 아이템에 대한 아이템 데이터들이 있을 터이니 우리는 이것을 눈에 보이는 아이템과 눈에 보이지 않는 아이템 데이터로 나눈다고 치자.

플래시의 특성상 아이템이라는 하나의 클래스에 눈에 보이는 아이템과 눈에 보이지 않는 데이터들이 아래와 같이
섞여 있을수 밖에 없었다.


이렇게 뷰와 데이터가 합쳐 있어서 생기는 이점보다는 추후 관리 하기 힘들어 지는 경우가 많았다. 

물론 작은 데이터를 관리하게 될경우 이렇게 뷰와 모델을 합쳐 사용하는것이 더 효율적일수도 있다.

하지만 뷰 클래스와 데이터를 관리 하는 모델 클래스를 따로 분리 함으로써 보다 유연하게 만들수 있다.

예를들어 이처럼 처음에는 이름과 아이디밖에 필요하지 않은 뷰의 모델이 많이 변경된다고 한다면 정말 골치 아픈일이 아닐수 없다.

하지만 뷰와 모델이 따로 분리 되어 있다면 뷰에 해당하는 모델을 언제든지 변경 해서 끼워 넣기만 하면 될것이다.


두개의 아이템목록이다.

우선 독수리뿔 장궁을 클래스로 만들었다.


Sprite를 상속받은 독수리뿔 장궁 클래스인데 몇개 안되는 데이터인데도 굉장히 많아 보인다. 
뷰 자체가 이렇게 많은 데이터를 들고있으니 뷰가 움직일때마다 이 모든 데이터들도 함께 움직일것을 생각하니 끔찍한 일이 아닐수 없다.

그래서 보통 우리가 사용하는 방법중에 하나가 아래와 같은 방법이다.


하지만 아직도 뷰가 데이터를 관리 하고있는 아주 안좋은 모습을 하고있다.

이것을 어떻게 풀것인가?

우선 Mediator Pattern에 대해 알아야 하는데 이번시간은 패턴연구하는 시간이 아니기때문에 다음 주소에 있는 글과 동상을 보면서 학습하자

http://www.as3dp.com/?s=mediator
http://johnlindquist.com/2010/10/13/patterncraft-mediator-pattern-vs-framework-mediators/

행위패턴에 해당하는 Mediator 패턴을 간략히 설명하자면 중재자라는 뜻을 가지고있는데
역할은 뷰에 해당하는 행동들을 중재 해주며 뷰에 해당하는데이터들도 함께 관리 해준다.
또한 뷰를 업데이트 시키기도 한다.

로봇다리에서는 하나의 Mediator는 하나의 뷰에 매핑이 되는데 두개의 뷰를 하나의 Mediator에는 매핑 시킬수 없다. 있는 방법도 있지만 권장하지않는다.

이렇게 Mediator에게 하나의 뷰와 하나의 데이터를 관리 하도록 위임 해주는것이 해결 방법이다.



1. 뷰를 만든다.
2. 뷰에 해당하는 데이터를 만든다.
3. Mediator를 만들어 뷰와 데이터를 매핑 시킨다. 



Mediator에서는 하나의 뷰와 그와 매핑되어 있는 데이터 모델을 받아 관리 한다.



이로써 클래식하게 뷰와 모델을 나누었다.

다음에는 로봇다리로 나누는 방법에 대해 이야기 해볼것이다. 

로봇다리가 얼마나 간편하게 나눠주는지 깜짝 놀랄것이다.





 
반응형

'Adobe Flash' 카테고리의 다른 글

RL_as3isolib World 구성하기  (0) 2011.09.15
as3 robotlegs dispatch event module to module  (0) 2011.09.14
Robotlegs FLASH IDE Project vs As3Project  (0) 2011.09.12
Robotlegs as3 removeViewListener?  (0) 2011.09.12
Robotlegs injector.mapValue  (0) 2011.09.10
: