Rex*_*ten 3 design-patterns mvvm
stackoverflow搜索将导致包含类似标题的多个帖子,但这是不同的问题.由于这不是一个讨论网站,我不得不问一个不同的问题.
使用MVVM可以从其他任何实现中获得哪些独特的好处?MVC.NTiers,或其他任何东西.我并不是真的在寻找使MVVM与众不同的识别功能.我正在寻找除了MVVM之外无法做到的事情.我目前对它的了解使我认为,MVVM是一种不同的方式来做同样的事情,引入更多的复杂性然后说nTiers.我不想采取这种复杂性的引入的角度,是一个消极的事情.如果通过实现独特的利益来证明这一点,那么我想知道这一点.
深入谷歌,只有MVVM捍卫.它没有发现这些独特的好处.
我能想到的唯一好处是MVVM上的MVVM模式(它是一个变体)是在MVVM中,你不需要像在一个视图中那样将View显式附加到ViewModel(Presenter). MVP实施.这是由WPF提供的设施实现的.(最重要的是BindingExpressions)在MVP中,您将定义一个界面来表示演示者如何与视图交互(IxxxxView是一种传统的命名模式),当您创建演示者时,您将视图界面传递给它(附加的)到视图实例).这确实允许在公共演示者之上进行一些视图变化.
在MVVM中,您没有显式定义该接口.您定义ViewModel并使用Binding将ViewModel(逻辑)挂钩到View(演示文稿).视图中没有ViewModel的内在知识,因为绑定(如果它们在XAML中完成)在运行时(或有时在设计器中)得到解析.理论上,WPF应用程序应该能够在没有UI的情况下完全驱动.
您从MVVM/MVP/MVC获得的好处主要是表示和业务逻辑之间的关注点分离以及它允许的内容.它允许专门的技术角色(阅读:实际图形设计师)在演示文稿上工作而无需了解C#/ VB.NET代码.他们可以构建演示文稿,然后开发人员会出现并将事情搞砸.
此外,开发人员现在具有允许通过单元测试自动测试代码的模式.因为应用程序可以(大多数情况下)在没有UI的情况下驱动,所以单元测试是一个很好的工具,可以让开发人员真正运用他们编写的所有代码.
这并没有真正解决"N-Tier"和MVVM之间的比较,因为我不知道那是苹果与苹果的比较.可以说,MVVM WPF应用程序是N层应用程序,在解决方案中有几个逻辑层.
最终,MVVM/MVP/MVC都是非常可比的模式,具有相同的好处.但有一件事是,我知道MVVM只能在WPF/Silverlight是首选的演示技术时使用.我想这是MVVM的一个独特优势.它是WPF/Silverlight中的特定和最佳模式.在使用MVVM之后,在WPF中使用任何其他模式会感到笨拙.