恭喜,你发布的帖子
发布于 2020-02-04 05:38:49
9楼
补充一点。MVVM模式的好处除了通常提到的UI和后台分离,在真正的项目中,它会让后台的业务本身进行模块化,而这对可维护性和扩展性是巨大的好处。这一点,由于这个案例太小,未能体现。在做过的复杂案例中,这个优点非常明显。
为了实现MVVM,就必须对ViewModel暴露的每一个属性和方法进行精确和标准化的设计和控制。当实现这一点之后就会发现,事实上业务逻辑已经被分隔成诸多的层和小块儿了,每一个的功能都非常单纯明确,这在后台业务进行调整或调试的时候是非常重要的。所以MVVM这种模式,事实上是对来自外界、富于变化的客户需求,真正完成了OO中所说的封装。来自View的全部需求都被非常精致的抽象成了标准接口集,这也就是为什么这个逻辑层被成为ViewModel。
相比之下,底层的数据库和通信,是比较固定的东西,简单的封装即可完成,比较稳定。尤其是通信部分,封装后基本不会随着需求的变化而变化。当然上位机可以根据需求增加不同的通信子模块,以扩展数据源。但每个不同的子模块是非常稳定的。比如和西门子、AB、或者OPC通信等,都会是不同的子模块。
WPF的Xaml语言,对于MVVM模式可以说是量身定做的。为了实现业务逻辑和UI之间的标准接口集,从底层实现来看,需要用到多种不同对象的衔接和分层封装,这在本质上是一个非常繁重的工作。而Xaml用“标记(Markup)”封装了对象,和写网页差不多的几行代码,这些繁重的工作就被瞬间以封装的方式实现和隔离了,再加上她的高性能,还有依赖性属性这么优美的对象之间的衔接方式,不得不说Xaml是个设计优秀的作品。虽说WPF已经多年未更新了,但Xaml这个语言,包括在UWP中,会一直是视觉交互实现的高手。
请填写推广理由:
分享
只看
楼主