zoukankan      html  css  js  c++  java
  • MVVM模式(一)

           MVVM模式是Model、View、ViewModel的简称,最早出现在WPF,现在Silverlight中也使用该模式,MVVM模式是对MVC模式的变种。哪儿变了?我认为MVVM和MVC的主要变化在于MVVM更适合于XAML。

    image

     

    MVVM模式和MVC模式一样,主要目的是分离视图(View)和模型(Model),有几大好处:

    1. 低耦合视图(View)可以独立于Model变化和修改,一个ViewModel可以绑定到不同的"View"上,当View变化的时候Model可以不变,当Model变化的时候View也可以不变。

    2. 可重用性你可以把一些视图逻辑放在一个ViewModel里面,让很多view重用这段视图逻辑。

    3. 独立开发开发人员可以专注于业务逻辑和数据的开发(ViewModel),设计人员可以专注于页面设计,使用Expression Blend可以很容易设计界面并生成xaml代码。

    4. 可测试界面素来是比较难于测试的,而现在测试可以针对ViewModel来写。

    image

    MVVMModelViewViewModel分工:

    1. View

    • 负责界面和显示,界面构成元素有Window, Controls, Page, DataTemplete, Custom controls  
    • 代码通常有XAML和XAML.CS组成,但后台代码应该很少
    • 通过DataContext和ViewModel绑定
    • 不直接和Model交互
    • 控件可以和ViewModel的公共属性绑定,update需要双向绑定
    • 控件可以触发Behavior/Command调用ViewModel的方法,Command是View到ViewModel的单向通讯 (View中触发事件,ViewModel中处理事件)

    2. ViewModel

    • 主要包括界面逻辑和模型数据封装,Behavior/Command事件响应,绑定的属性定义等
    • ViewModel继承Model类,或者是Model的继承类
    • 是view和model的桥梁,是对Model的抽象,例如,model中数据格式是“年月日”,可以在viewModel中转换model中的数据为“日月年”以供视图(view)显示。
    • 维护视图状态
    • 实现属性或集合的change notification

    3. Model

    • 数据和业务逻辑
    • 客户端领域模型
    • 由data entities, business objects, repositories and services构成
    • 可以实现属性或集合的change notification
    • 可以实现validation 接口例如 IDataErrorInfo

    image

     

    ViewViewModel主要通过数据绑定和Command/Behavior进行交互如下图所示:

    image

  • 相关阅读:
    HDU 2809 God of War(DP + 状态压缩)
    POJ 3311 Hie with the Pie(DP状态压缩+最短路径)
    HDU 1400 (POJ 2411 ZOJ 1100)Mondriaan's Dream(DP + 状态压缩)
    位运算的应用
    ZOJ 3471 Most Powerful(DP + 状态压缩)
    POJ 2039 To and Fro(模拟)
    UVA 10817 Headmaster's Headache(DP +状态压缩)
    黑子的篮球
    POJ 1564(HDU 1258 ZOJ 1711) Sum It Up(DFS)
    HDU 3006 The Number of set(位运算 状态压缩)
  • 原文地址:https://www.cnblogs.com/muzihai1988/p/2421616.html
Copyright © 2011-2022 走看看