Composite
#
다중 계층의 문제- 파일시스템 : 폴더안에 파일이 폴더안에 폴더
- 알고리즘 문제에서는 동적계획법, 트리탐색
속도는 동적계획법이 더 빠르지만 정형화된 알고리즘에 가면 트리탐색이 더 쉽다.
#
Composite내 문제를 스스로 다 해결하지 않고, 위임을 반복해서 그것들을 취합하는 행위
상위 ViewModel 의 변화
- 자기를 구독 Observer Listen 하고 있는 대상에게 notify 된다.
상위 ViewModel 안의, 하위 ViewModel 에 변화
- 하위 ViewModel 변화를, 상위 ViewModel 이 Listen 구독하게 만들 고자 한다.
Binder 는 최상위 ViewModel 을 알면 모든 ViewModel 을 다 매핑할 수 있다.
- Binder 는 최상위 ViewModel 와 계약을 하고, 하위 ViewModel 과는 계약하지 않는다.
- 하위 ViewModel 의 변화는
- 자신의 리스너에게도 알려야 하고,
- 상위의 리스너에게도 알려야 한다.
#
객체지향 컴포지션 → 동적 위임#
ViewModelValueNotification 으로 Observer 가 수신 받는 객체 (info 객체)
#
인포객체의 설계- 기능이 부족하면 서브젝트(ViewModel) 를 참조하게 된다.??
- 너무 많으면 유지보수할 때 마다 다른 코드가 다 깨진다.
#
subKey- 변화 한 것이 이 나 자신인지, 하위 ViewModel 인지를 구분
- subKey 는 자식이자 자기자신을 가리킬 수 있다.
- 모든 자식들이 고유한 서브키를 갖고 있다고 가정했다.
#
ViewModelViewModel 은 Notifier 인 동시에 Observer 가 될 수 있기 때문에 ViewModelListener 를 확장한다.
#
requestAnimationFramenotify 가 속성이 바뀔 때 마다 발생 → Binder 의 render 가 매우많이 발생
그러나,
- 브라우저에서 render 는 requestAnimationFrame 를 초과해서 일어나지 않는다.
- requestAnimationFrame 당 변화를 취합해서 notify 한다.