模式结构
下图是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使用。
经过这些分析与设计的种种考虑,可以设计出如下图的对象图。