설계 종합

viewModel

viewModelSubject

viewModelListener

ViewModelValue

  • 매우 무거운 객체
  • 수정하기 어려운 객체가 된다.
  • 이벤트에서, 옵저버 패턴에서 인포객체는 항상 무겁다.
  • JQuery 가 제일먼저 뜬 이유는, Dom 이벤트 객체를 감싸서 모든 브라우저에서 작동하는 이벤트 속성 객체로 바꿔주었기 때문이다.

좋은 설계

  • 단방향 의존성만 존재.
  • 순환도 없다.

코드를 짜고나서 그림을 반드시 그리자. ViewModelValue

image

image

image

image

image

image

image

image

image

image

모두 단방향이다.

Binder 는 상당히 위험한 객체다.

  • 나가는 선이 많은 클래스는 깨지기 쉬운 클래스
  • 영향을 많이 받음
  • 안정적인 클래스에 의존해야한다.

모여드는 선이 많으면 무거운 클래스

  • 바뀌면 영향을 많이줌.

청록색 박스 → 실제 돔에 대한 지식

  • 이 부분을 다른 도메인으로 교체할 수 있다.
  • 클라이언트에서 작성해야 할 코드

나머지는

  • 돔에 대한 의존성이 없는 순수 인메모리 객체이다.

MVVM 이 좋은점

  • 대부분이 플랫폼 의존성이 없다.
  • 뷰 모델은 가상의 뷰다. 인메모리 객체이기 때문에, 특정한 구형물의 의존성이 없다
  • 안드로이드, 아이폰 .. .에도 쓸수있다.
  • 리액트 네이티브를 비롯해 가상화 되어있는 렌더링 시스템이 이렇게 구현된다

옵저버 패턴은 비용이 싸지 않다.

  • 많은 구현체들은 성능상의 이유나 설계상의 이유로 직접 binder call 하는 경우가 많다.

자바스크립트에서 재귀를 제대로 쓸 수 있는 브라우저는 사파리 밖에 없으므로 루프를 조심해서 짜야 한다.

Last updated on