(Translated by https://www.hiragana.jp/)
MVVM - 维基百科,自由的百科全书 とべ转到内容ないよう

MVVM

本页使用了标题或全文手工转换
维基百科ひゃっか自由じゆうてき百科ひゃっかぜん

MVVMModel–view–viewmodelいち种软けん构模しき

MVVMゆうじょ于将图形よう户界めんてき开发あずか业务逻辑あるきさきはし逻辑(かずすえ模型もけいてき开发ぶん开来,这是どおりおけ标语げんあるGUIだい码实现的。MVVMてき视图模型もけいいち个值转换[1]意味いみ视图模型もけい负责从模がたちゅう暴露ばくろ(转换)かずすえ对象,以便轻松管理かんりてい现对ぞうざい这方めん,视图模型もけい视图做得さらおお,并且处理大部たいぶ

ぶん视图てき显示逻辑。[1] 视图模型もけい以实现ちゅうかいしゃしき,组织对视图所支持しじてき用例ようれいしゅうてききさきはし逻辑てき访问。

MVVM马丁·ぶくてきPM(Presentation Model)设计しきてき变体。[2][3] MVVM以相どうてき方式ほうしき抽象ちゅうしょう视图てきじょう态和ぎょう为,[3] ただしPM以赖于特定とくていよう户界めん平台ひらだいてき方式ほうしき抽象ちゅうしょう视图(建立こんりゅうりょう视图模型もけい)。
MVVMPMMVCしき

MVVMゆかりほろ构师Ken CooperTed Peters开发,つう利用りようWPFほろ.NET图形けい统)Silverlight(WPFてき互联网应よう衍生ひんてき特性とくせいらい简化よう户界めんてき事件じけん驅動くどうほどしき設計せっけい[3] ほろ软的WPFSilverlight构师いちJohn Gossman于2005ねんざいてきはくきゃくじょう发表りょうMVVM。

MVVM也被しょうmodel-view-binderとく别是ざいわたる及.NET平台ひらだいてき实现ちゅうZK(JavaうつしてきいちWeb应用かまちKnockoutJSいちJavaScript使用しようmodel-view-binder。[3][4][5]

MVVMしきてき组成部分ぶぶん

[编辑]
模型もけい
模型もけいゆび代表だいひょう实状态内容ないようてき领域模型もけいめんこう对象),あるゆび代表だいひょう内容ないようてきかずすえ访问层(以数すえ中心ちゅうしん)。
视图
就像ざいMVCMVPしきちゅういち样,视图よう户在へいまくじょういたてき结构、ぬのきょくがい观(UI)。[6]
视图模型もけい
视图模型もけい暴露ばくろ公共こうきょう属性ぞくせい命令めいれいてき视图てき抽象ちゅうしょう。MVVMぼつゆうMVCしきてきひかえせい,也没ゆうMVPしきてきpresenter,ゆうてきいち绑定ざい视图模型もけいちゅう,绑定ざい视图かずすえ绑定えいData bindingこれ间进ぎょう通信つうしん[7]
绑定
声明せいめいせいすうすえ命令めいれい绑定隐含ざいMVVMしきちゅうざいMicrosoftかい方案ほうあんうずたかえいsolution stackなか,绑定いち种名为XAMLてき标记语言[8] 绑定使开发じん员免于被はさま编写样板しき逻辑どう视图模型もけい视图。ざいほろ软的うずたかこれがい实现时,声明せいめいせいすうすえ绑定わざ术的现是实现该模しきてきいち个关键因もと[4][9]

论基础

[编辑]

MVVMむねざい利用りようWPFちゅうてきかずすえ绑定函数かんすうつう过从视图层中几乎删除所有しょゆうGUIだい码(だい码隐ぞう),さら好地こうち促进视图层开发与しき其余部分ぶぶんてきぶん离。[10] 需要じゅようよう户体验(UX)开发じん员编うつしGUIだい码,们可以使用しようかまち标记语言(如XAML),并创けんいた应用ほどじょ开发じん员编うつし维护てき视图模型もけいてきすうすえ绑定。かくしょくてきぶん离使とく交互こうご设计师可以专ちゅう于用户体验需もとめ,而不对业务逻辑进ぎょう编程。这样,应用ほどじょてき层次以在工作こうさくりゅうちゅう进行开发以提だかせい产力。そく使つかい一个开发人员在整个代码库上工作,视图与模型もけいてき适当ぶん离也かいさらだかこういん为基于最终用户反馈,よう户界めん通常つうじょうざい开发周期しゅうきちゅう经常发生变化,而且处于开发周期しゅうききさき

MVVMしき试图获得MVC提供ていきょうてきこうのうせい开发ぶん离的两个优点,どう利用りようかずすえ绑定てき优势どおり过绑定数ていすうすえてきかまちつき可能かのう接近せっきん纯应ようほどじょ模型もけい[10][11][12]使用しよう绑定、视图模型もけいかずつとむなに业务层的すうすえ检查こうのうらい验证传入てきすうすえ。结果模型もけいかまち驱动つき可能かのうてき操作そうさしょうじょある最小さいしょう直接ちょくせつみさお纵视图的应用ほどじょ逻辑(如代码隐ぞう)。

MVVMしき不同ふどう于MVC,ざいMVVMしきちゅうはたViewModel层绑じょういたView层后,它基本きほん使用しようてん事件じけん,而是使用しよう命令めいれい(Command)らいひかえせいかずすえてき显示也是不同ふどう于MVC,而是使用しようBindingらい绑定しょう关数すえ

值得いちひさげてき,MVVM通常つうじょうかい使用しよう属性ぞくせい更改こうかい通知つうちそくすうすえ驱动而不事件じけん驱动。ざいWPF中当なかとうすうすえ发生あらため变时,かいどおり过接こうINotifyPropertyChanged通知つうちいた对应てき组件绑定てきすうすえ,实现どう步数ほすうすえ刷新さっしん

批评

[编辑]

对这种模しきてき批评MVVMてき创造しゃJohn Gossman本人ほんにん[13]指出さしで,实现MVVMてき开销对于简单てきUI操作そうさ“过度てき”。说,对于さらだいてき应用らい说,推广ViewModel变得さらこま难。而且,说明りょう非常ひじょうだいてき应用ほどじょちゅうてきすうすえ绑定かい导致相当そうとうだいてきないそん消耗しょうもう

.NETちゅうてき实现

[编辑]

.NETかまち

[编辑]

まいり

[编辑]

参考さんこう文献ぶんけん

[编辑]
  1. ^ 1.0 1.1 Google groups. Thought: MVVM eliminates 99% of the need for ValueConverters. [2017-11-19]. (原始げんし内容ないようそん于2011-01-22). 
  2. ^ Martin Fowler. The Presentation Model Design Pattern. Martin Fowler.com. 19 July 2004 [2017-11-19]. (原始げんし内容ないようそん于2021-01-26). 
  3. ^ 3.0 3.1 3.2 3.3 Smith, Josh. WPF Apps with the Model-View-ViewModel Design Pattern. MSDN Magazine. February 2009 [2017-11-19]. (原始げんし内容ないようそん于2019-10-31). 
  4. ^ 4.0 4.1 Massey, Simon. Presentation Patterns in ZK. [24 March 2012]. (原始げんし内容ないようそん于2020-08-13). 
  5. ^ Steve Sanderson. KnockoutJS. [2017-11-19]. (原始げんし内容ないようそん于2020-08-16). 
  6. ^ The MVVM Pattern. msdn.microsoft.com. [2016-08-29]. (原始げんし内容ないようそん于2017-08-25). 
  7. ^ Pete Weissbrod. Model-View-ViewModel Pattern for WPF: Yet another approach.. [2017-11-19]. (原始げんし内容ないようそん档于2008-02-01). 
  8. ^ Wildermuth, Shawn. Windows Presentation Foundation Data Binding: Part 1. Microsoft. [24 March 2012]. (原始げんし内容ないようそん于2018-08-29). 
  9. ^ ZK MVVM. Potix. [24 March 2012]. (原始げんし内容ないようそん于2016-03-18). 
  10. ^ 10.0 10.1 Josh Smith. WPF Apps With The Model-View-ViewModel Design Pattern. [2017-11-19]. (原始げんし内容ないようそん于2019-10-31). 
  11. ^ John Gossman. Tales from the Smart Client: Introduction to Model/View/ViewModel pattern for building WPF apps. [2017-11-19]. (原始げんし内容ないようそん于2010-01-25). 
  12. ^ Karl Shifflett. Learning WPF M-V-VM.. [2017-11-19]. (原始げんし内容ないようそん档于2009-04-13). 
  13. ^ John Gossman. Tales from the Smart Client: Advantages and disadvantages of M-V-VM. [2017-11-19]. (原始げんし内容ないようそん于2011-08-16). 

外部がいぶ链接

[编辑]