MVVM是Model、View、ViewModel的简写,这种模式的引入就是使用ViewModel来降低View和Model的耦合,说是降低View和Model的耦合。也可以说是是降低界面和逻辑的耦合,抱负情况下界面和逻辑是完全疏散的,片面变动界面时不需要对逻辑代码窜改,,同样的逻辑代码变动时也不需要变动界面。同一个ViewModel可以使用完全不用的View进行展示,同一个View也可以使用差此外ViewModel以供给差此外操纵。
1.ModelModel就是一个class,是对现实中事物的抽象,开发过程中涉及到的事物都可以抽象为Model,例如客户,客户的姓名、编号、电话、住址等属性也对应了class中的Property,客户的下订单、付款等行为对应了class中的要领。
2. ViewView很好理解,就是界面。
3. ViewModel上面说过Model抽象,那么ViewModel就是对View的抽象。显示的数据对应着ViewMode中的Property,执行的命令对应着ViewModel中的Command。
WPF中MVVM的解耦方法在WPF的MVVM模式中,View和ViewModel之间数据和命令的关联都是通过绑定实现的,绑定后View和ViewModel并不孕育产生直接的依赖。具体就是View中呈现数据变革时会测验考试改削绑定的方针。同样View执行命令时也会去寻找绑定的Command并执行。反过来,ViewModel在Property产生转变时会发个通知说“名字叫XXX的Property转变了,你们这些View中谁绑定了XXX也要随着变啊!”,至于有没有View收到是不是做出变革也不关心。ViewModel中的Command脱离View就更简单了,因为Command在执行操纵过程中操纵数据时,根柢不需要操纵View中的数据,只需要操纵ViewModel中的Property就可以了,Property的变革通过绑定就可以反应到View上。这样在测试Command时也不需要View的参预。这也是我在接触WPF初期时根柢理解不了的所谓数据驱动。
这样一来ViewMode可以在完全没有View的情况下测试,View也可以在完全没有ViewModel的情况下测试(固然只是测试界面结谈判动画等业务无关的内容)。
MVVM框架需要解决的问题从图中可以看出如果要实现一套MVVM框架,需要解决的最根基的问题就是数据绑定和命令绑定。别的由于UI中会孕育产生大量的事件,因此还需要将事件绑定到MVVM中的命令上。后面的文章将依次测验考试解决这些问题。最后还是要说一下任何设计模式都是参考,都有使用场景,切忌生搬硬套。实际开发中应按照项目特点采纳适配性更强的模式。