generated at
MVP (Supervising Controller)

2000 年に Windows 環境に進出した Smalltalk (Dolphin Smalltalk) で採用された
MVP (Taligent) に着想を得てはいるものの、概念に大きな差異がある
この MVP は、Application Model パターンの MVC の要素を 60 度ひねったもの
もとは、Controller がユーザー操作の入力を受け付けて、Model がプレゼンテーションロジックも担っていた
この MVP では、View がユーザー操作の入力を受け付けて、Presenter がプレゼンテーションロジックを担う
View 自身が入力イベントを解釈するのは、Windows 環境のウィジェットがすでに Controller 的な機能を持っていたため
Presenter は View の実体を直接知っており、ウィジェットよりも大きな単位で存在する
すなわち、Presenter は複数の view を管理し、階層的に取り扱うもの
iOS における view controller と同じようなイメージ
Presenter が直接 view を操作できる仕組みを Supervising Controller と呼ぶ (Martin Fowler)
課題
View への状態反映に 2 つの経路がある
オブザーバー同期 : View 自身が Model を監視して自身を更新
フロー同期 : Presenter が処理の最中に view のインスタンスを直接更新