Windows Phone开发之MVVM模式

移动开发
本文为大家介绍了Windows Phone开发中的MVVM模式,将系统拆解成三个类别 (Model、View、ViewModel)。各个类别的主要职责为:Model负责企业数据逻辑、View负责画面数据逻辑、ViewModel负责执行状态维持、画面流程逻辑及企业流程逻辑。

模式结构

下图是MVVM模式的结构图,很简单的就是将系统拆解成三个类别 (Model、View、ViewModel)。

各个类别的主要职责为:Model负责企业数据逻辑、View负责画面数据逻辑、ViewModel负责执行状态维持、画面流程逻辑及企业流程逻辑。

其中 ViewModel-Model之间,是ViewModel直接使用 Model开放的成员,属于ViewModel到Model的单向沟通连接。

而 View-ViewModel之间,是透过 Binding技术及Command的设计

模式,将两者作双向的沟通连接。

MVVM

模式特征

做为MVC延伸模式的MVVM模式,其***的特征就是,

在View-ViewModel之间,是透过 Binding技术及Command的设计模式,将两者作双向的沟通连接。

并且在模型结构设计上,将ViewModel定义为有状态的对象模型,由ViewModel负责维持执行状态。

这样设计***的好处,是可以将View与ViewModel之间的相依关系,设计为单向相依。

ViewModel做是独立的个体不相依View,让View的职责回归到单纯的完成输入及显示的工作。

并且方便特定的设计工具设计View的外观,可以将View的设计交由完全不懂程序设计的人员作处理。

实作分析

1. MVVM模式本身在模型结构设计上,是将ViewModel设计为有状态的对象模型。

实作范例的内容,将ViewModel架构在有状态的应用程序模型上,不做额外的设计。

2. 而 MVVM模式对象之间的生成模式,实作上设计成以View当作主要对象,生成ViewModel及Model,并且将Model注入至ViewModel。

3. 以DDD的观念去分析Model,可以将Model视为Domain Layer,是整个模式重用的焦点。

这个Domain Layer里面,包含了整个Presentation会使用到的数据对象、边界对象、逻辑对象...等等。

4. 以DDD的观念去分析ViewModel,可以将ViewModel视为Application Layer。

这个Application Layer封装View所需要的数据、操作及状态维持,用来提供给View使用。

经过这些分析与设计的种种考虑,可以设计出如下图的对象图。

责任编辑:闫佳明 来源: wpdever
相关推荐

2017-07-17 15:19:10

MVVM模式iOS开发MVP

2013-04-24 13:43:10

Windows Pho动画PointAnim

2013-04-19 17:11:02

Windows PhoWindows Pho

2013-04-24 13:31:59

Windows Pho动画之ColorAni

2013-04-24 13:19:06

Windows Pho动画DoubleAni

2013-04-23 16:55:15

Windows Pho路径之其它Geomet

2013-07-31 13:36:07

Windows PhoVS调试技巧Windows Pho

2010-04-21 17:07:54

Windows Pho

2013-07-30 12:37:56

Windows PhoWindows Pho

2013-04-16 17:02:50

Windows Pho概论

2013-04-19 16:34:56

Windows PhoWindows Pho

2013-07-30 11:18:37

Windows PhoWindows Pho

2010-08-06 15:44:28

Windows PhoWindows PhoSilverlight

2011-06-07 12:42:15

Windows Pho

2013-04-17 14:00:06

Windows PhoWindows Pho

2010-04-08 17:40:23

Windows Pho

2013-04-25 15:15:41

Windows PhoWindows PhoWindows Pho

2013-04-19 15:35:54

Windows Pho隔离存储

2010-12-14 18:48:49

微软

2012-06-04 14:47:58

Windows Pho
点赞
收藏

51CTO技术栈公众号