-
mvc + observerVanilla js 2021. 9. 19. 21:59
MVC 모델은 layered style이다.
아래 레이어는 상위 레이어를 사용하는 것을 권장하지 않는다.
a 계층이 b 계층을 사용하면 a 계층은 b 계층에 종속되고
b 계층이 없으면 a 계층은 자신의 역할을 수행할 수 없다. 이러한 관계를 usage dependency 라고 한다.
즉, 상위 계층은 하위 계층에 대해 usage dependency 가 있다.MVC 패턴에 Observer 패턴을 적용시킨다면
Model은 "Observable"이라 할 수 있고,
View는 "Observer"라고 할 수 있다.Observable이 변경되면 해당 상태를 Observer에게 알리고 관찰자는 해당 변경사항에 대응할 수 있어야 한다.
컨트롤러는 더 이상 뷰를 업데이트할 필요가 없고
뷰는 모델에 따라서 업데이트가 된다.Model에 상태를 감지하고자하는 View들을 저장하고
Model의 상태가 변화된다면 View들에게 알리기 위한 메서드 notifyAll() 을 추가해야하며
View에서는 Model의 상태 변화 감지 후 변경을 위한 메서드 update() 를 추가해야 한다.[ MVC 패턴 ]
View 에서 Controller에게 Action을 전송
Controller에서 Action에 따라 Model 값 변경
Controller에서 View에게 Model 값을 전달[ MVC + Observer 패턴 ]
Model을 구독할 View들을 Model에 저장
Model의 상태 변경되면 notify 메서드로 View에게 알린다.
View들은 Model의 상태 변경 확인 후 update 메서드 실행[ 코드 ] : https://github.com/jin-Pro/Design-Pattern/tree/master/MVC%2BObserver-Pattern
[ 참고 ] : https://dailyscat.gitbook.io/twis/designpattern/js-mvc+observer
'Vanilla js' 카테고리의 다른 글
innerHTML , innerText , appendChild (0) 2021.09.19 Observer 패턴 (0) 2021.09.18 MVC 패턴 (0) 2021.09.18 Vanilla Javascript로 가상돔(VirtualDOM) 만들기 (0) 2021.09.18 Vanilla Javascript로 상태관리 시스템 만들기 (0) 2021.09.18