MVC、自分用メモ
▼Reenskaug (XEROX PARC) 「MVC」/ Things - Model - View - Editor
変化しにくいインフォメーションと変化しがちなプレゼンテーションとの分離。メンタルモデルの記述としてのMVCは失敗(続きは DCI, Data - Context - Interaction で)。Smalltalk-76, 1978。
▼Reenskaug (XEROX PARC) 「MVC」/ Model - View - Controller(Editor)
Controller を追加。Editor は特殊な Controller として位置付け。Smalltalk-80, 1979-。
▼VisualWorks (ParcPlace Systems) 「Application Model」/ Model - ApplicationModel - View・Controller
Model から View - Controller 寄りのロジックを分離して独立させた ApplicationModel を追加。VisualWorks Smalltalk, 1992。
▼Gamma, et al. 「MVC」/ Model - View - Controller
Smalltalk での実装を分解して、デザインパターンの組み合わせ例(Observer、Strategy、Composite、Factory Method、Decorator)として解釈・紹介。C++, 1994。
▼Potel (IBM Taligent) 「MVP」/ Model - Presenter - View (View + Controller)
モダンな GUI コンポーネントにおいて冗長な Controller の役割を View に吸収させ、View と Model の仲介者として Presenter を追加 Controller をアプリケーションレベルに引き上げ、View と Model との仲介者として位置づけ直し Presenter と改名。C++/Java, 1996。
▼Dolpin Smalltalk (Object Arts) 「MVP」/ Model - Presenter - View (View + Controller)
Potel MVP の Smalltalk 実装。 をヒントに、VisualWorks の Application Model における ApplicationModel の役割を UI 寄りの実装の Presenter に担わせ、モダンな GUI コンポーネントにおいて冗長な Controller の役割を View に吸収させて改めて View とすることで、Model - Presenter - View という三連構造を新たに提唱。頑張る Controller を Presenter に昇格させただけの Potel の MVP とはぶっちゃけ別物。Dolphin Smalltalk, 1996。
▼Fowler 「Presentation Model」/ Model - PresentationModel - View
VisualWorks の Application Model のこと? 2004。
▼Gossman (Microsoft) 「MVVM」/ Model - ViewModel - View
Fowler Presentation Model を WPF 向けに特殊化した実装。C#, 2005。
CocoaのMVCは、たんなる「コントローラーが頑張るMVC」程度のものだと思っていたのだけれども、実は独自の工夫があるのか、普通にApplication Modelとかの流れなのかについて整理がついていないのでこれから勉強する。
参考文献:
- http://lists.squeakfoundation.org/pipermail/squeak-dev/1998-May/016528.html
- MVCパターンの適用限界を考える(4) (Weblog on mebius.tokaichiba.jp)
- Model View Controller, Model View Presenter, and Model View ViewModel Design Patterns - CodeProject
- MVC, Model 2, Java WebApps, (and callcc, why not) - Brian's Waste of Time
- Model-View-ViewModel デザイン パターンによる WPF アプリケーション