PluggableMVCとMMVC
Flex/AIRアプリのアーキテクチャ探索 その1 - [lib]の続きでプラガブルMVC(PMVC)を検索してたら、PMVCとModelModelViewController(MMVC)が一緒に出てきた。
(といってもどちらもMVCに比べたら全然情報が少ない)
PluggableMVC
まずPMVC
http://www.sra.co.jp/people/aoki/SuperAsciiJ/SAscii06.html
UML的に表されて参考になるとこ
http://careless-adventurers.net/?date=20071025
PluggableはModelのインターフェースをMとして挟んでMVCを構成、そのインターフェースモデル
の後ろから実体を挿すということのよう。
MMVC
MMVCはここの図6、図7にあたる
http://www.sra.co.jp/people/nisinaka/Jun4Java/MVC/
こちらでも書かれてるように、ModelをApplicationModelとDomainModelに分けるMVC
http://careless-adventurers.net/?date=20071015#p04
注意点は、以下のFowler記事を読むと、Application Modelには他のオブジェクトとの協調(サービス)に必要なことを入れ、主なロジックやデータソース関係はDomain Modelに入れることのようだ。
Domain Modelにはデータソースだけでなくロジックも組み込め、という。
データと振る舞いをまとめるオブジェクト指向に反していて、コストが増えるというのが理由か。
http://capsctrl.que.jp/kdmsnr/wiki/bliki/?AnemicDomainModel
PluggableMVCとMMVC
この2つが同じレベルで出てくるのは、PMVCがインテーフェースによって、MMVCがはpplicationModelによって、
View・ControllerとModelが疎結合になっっている点で似ているからだと思う。
そして、PMVCのモデルをMMVCのように分割、MMVCのApplicationModelにインターフェースを備えれば、両者は同じ構造になる。
http://careless-adventurers.net/?date=20071025
逆にいうと
というのが両者の違いなのだと思う。
なるべく軽くシンプルにいこう
責務の分割は簡単で仕様的にも分かりやすくなるので、MMVCの方が少し軽量な気がする。それほど大きくないアプリであればインターフェースを使わなくていいだろうし。
http://osiris.sunderland.ac.uk/~cs0her/COM379%20Lectures/Lecture19.pdf
この資料では、MVCやVisualProxyパターンは大変だから、シンプルにやるのが第一と言っているし。
ただ3レイヤーは使うようにとのこと。多分プレゼンテーション層(View)とドメイン層Model)、その間にある仲介層(Contorller、外部入力の仲介もする)は分けて考えた方がいいよ、ということだろう。
分離についてのシンプルな記事
http://capsctrl.que.jp/kdmsnr/wiki/bliki/?PresentationDomainSeparation