メインメニューを開く

差分

Model View ViewModel

755 バイト追加, 2015年3月9日 (月) 07:42
編集の要約なし
'''Model View ViewModel'''(略称:MVVM)とは、[[ユーザーインターフェイス]]([[UI]])を構築するための[[デザインパターン]]のひとつである。
勉強中。==概要==最近流行の[[仮想化]]を[[プログラミング]]における[[デザインパターン]]として取り入れたものである。大雑把にいえば実体の無い仮想的なUIである「ビューモデル」を用意して、そこで動作検証を全部済ませようと思いついたそうだ。
== MVVMの構造 ==
いわゆる[[MVC]]パターンのモデルと同じものである。
プレゼンテーション層、ドメイン層、データソース層の3層からなる[[ドメイン駆動設計]](通称:DDD)の思想に乗っ取れば、モデルはドメイン層に相当するものであるが、一般的にはその下のデータソース層までを含む。それどころかデータソース層にSQLなどを用いて読み書きしているだけというシステムも多い。(通称:DDD)の思想に乗っ取れば、モデルはドメイン層に相当するものであるが、一般的にはその下のデータソース層までを含む。それどころかデータソース層に[[SQL]]などを用いて読み書きしているだけというシステムも多い。
=== ビューモデル(ViewModel) ===
MVVMにおけるビューモデルとは、操作とデータに対する純粋な表示を受け持つ部分である。MVVMにおけるビューモデルとは、操作と[[データ]]に対する純粋な表示を受け持つ部分である。
大雑把にいえば「UI(ビュー)を仮想化(抽象化)したもの」である。
極端に言えば、[[パソコン]]向けのUI(ビュー)と[[iPhone]]向けのUI(ビュー)が別物であっても、ビューモデルに定義される「操作」は同一にできるという話である。ただし私の知る限りではMVVMは単体テストを捗らさせる目的で使っているものばかりであり、マルチプラットフォームのために使用しているという事例は実際には見たことも聞いたこともない。
 
==主なMVVMフレームワーク==
===.NET===
*[[WPF]]
*:実質的に[[Windows]]でしか使えない。[[デバッグ]]が容易になるが[[コード]]量が増えるので相殺され意味なし。
*[[MvvmCross]]
*:定番。[[NuGet]]が用意されてなくて若干不便。
*[[ReactiveUI]]
*:知らん。
*[[ReactiveProperty]]
*:知らん。日本製らしいがXamarin.Formsネタばかりで[[Xamarin.iOS]]での使い方がわからなかったから1時間で諦めた。
===JavaScript===
* [[knockout.js]]
== 関連項目 ==
** [[Model View Controller]]
** [[Model View ViewModel]]
 
; 主なMVVMフレームワーク
* [[WPF]]
* [[knockout.js]]
== 参考文献 ==
{{reflist}}
 
== 外部リンク ==
{{stub}}
匿名利用者