none
WPF , MVVM模式 讨论之... RRS feed

  • 常规讨论

  • 大家好,小弟最近学习WPF开发.了解到一种MVVM设计模式,并且学以致用,已经在项目中使用.但是小弟初学WPF而且对MVVM只有运用得技能.小弟想和各路大仙讨论 mvvm 模式使用范围,以及在项目中使用项目得到得好处.  在有的帖子,博客中又提到,mvvm得好处.单小弟愚钝.未能禅透.     请各路大侠帮小弟解开迷惑.为什么大项目中一定要使用MVVM模式开发.

    2012年3月29日 6:28

全部回复

  • 将UI设计和UI层面的逻辑操作分离,UI设计师只需要关注与界面 ,程序开发人员可以更关注与如何控制界面,和如何处理逻辑。 V(iew)-V(iew) M(odel)-M(odel), 这里面还是有Model数据层面的内容,一个灵活的系统必然有其高内聚和松耦合。MVVM,MVC,MVP等模式都是为了实现这个目的。


    Bob Bao [MSFT]
    MSDN Community Support | Feedback to us

    2012年3月29日 9:52
    版主
  • 谢谢  Bob Bao 的回复.我在又得帖子上也看到说可以更好得实现代码测试. 这个在代码测试中如何体现.
    2012年3月30日 2:06
  • 高内聚  和 松耦合.小弟愚钝.请Bob Bao 不吝赐教.告诉小弟具体是什么?
    2012年3月30日 2:08
  • 谢谢  Bob Bao 的回复.我在又得帖子上也看到说可以更好得实现代码测试. 这个在代码测试中如何体现.

    就是由于模块与模块之间的联系少了,便于将模块独立出来,放入测试环境进行各种测试,减少模块间的关联就是松耦合的目标。 比如要做一个单元测试,如果你将很多逻辑代码都在一个又有UI又有数据库访问逻辑的方法中,那么进行测试的时候就会变得相当复杂和极其不稳定。 我们可能需要帮助它构建一个测试的UI,构建测试数据库。但如果这一切都是一个很简单的函数,如果他和UI分离,和数据库关系很小,那么我们就只需要加载一个很简单的函数,测试输入输出就可以。

    Bob Bao [MSFT]
    MSDN Community Support | Feedback to us

    2012年3月30日 5:30
    版主
  • 高内聚  和 松耦合.小弟愚钝.请Bob Bao 不吝赐教.告诉小弟具体是什么?

    这个稍微搜一下应该有很多解释,书上也有很多。

    说通俗一点,我们需要将关系密切的逻辑和业务内容组织到一个模块中,对外提供尽可能少的接口,这样整体受到外部的影响将会变得很小。 这样一个模块对内就是具有了高内聚特性,对外,就有了松散的耦合性。M-VM-V 主要分成三层,(当然,按照实际情况,我们应该去合理的组织,我在你看的那个帖子中有所提到:http://social.msdn.microsoft.com/Forums/zh-CN/wpfzhchs/thread/5c5a772c-b80d-4da6-9c99-7f891b6524a3/) ,每层内部要尽可能将功能点细化,将联系紧密的部分组织在一起。 每层间要尽可能简单,比如VM和V,我们就通常只通过数据绑定实现,相当简单灵活,一个VM可以跟一个V绑定,也可以和其他人绑定,相互之间就通过简单的数据更新。V只能通过绑定属性来达到更新数据目的,所有数据进入VM都要通过属性的set方法,这样V能够影响到VM的面就会变得较少。


    Bob Bao [MSFT]
    MSDN Community Support | Feedback to us

    2012年3月30日 5:36
    版主
  • 谢谢. 对小弟得开导.
    2012年3月31日 3:12
  • 谢谢. 对小弟得开导. 其实小弟得在公司经过领导同意 在项目中个人使用mvvm模式进行开发.其他人员使用事件驱动进行开发.现在领导让我做一下报告.主要就是使用MVVM模式得心得和以后项目是否应该使用mvvm开发.   我们的项目用的是 懒加载.所以 模块直接耦合度是很低得.几乎是没有得.不知道我应该这么去说服领导使用MVVM模式开发.
    2012年3月31日 3:17
  • 谢谢 。shixin  我有点明白了。 呵呵。谢谢。我也想了。我自己做了好几个mvvm模块的功能。也有体会。mvvm 有好处,有坏处。但是利大于弊。我个人也喜欢mvvm模式,尤其在wpf开发中使用。仁者见仁智者见智。活出自我。不一定要领导喜欢。我们自己知道就行了。再次谢谢 shixin对我技术上的支持。

    2012年4月10日 9:39