为了应对客户日益复杂的需求变化,在软件项目的开发过程中,需要采用某种架构思想,来降低代码间的耦合程度。这样,即使界面或交互设计发生了变化,也不需要重新编写业务逻辑端的代码。
比较典型的一种架构思想就是我们熟知的MVC架构,它将业务逻辑、数据、界面三者相互分离,达到代码解耦与复用的目的。那么,什么又是MVVM架构呢?


KanziStudio部分
如图所示,我们实现了一个音乐播放功能的界面部分,结构比较简单,主要分为按键和歌曲详情两个部分。按键部分(View的输入),通过点击上一首/下一首/播放按钮,向代码(ViewModel)发送相关消息,代码对消息进行处理,将处理后的相关信息(歌曲详情)反馈给界面。在这里就有一个问题,业务逻辑部分要以怎样的形式去对UI界面进行修改呢?难道是直接在Kanzi中找节点设置属性吗?直接设置属性的话,找节点会不会很麻烦?UI界面和业务逻辑是不是又耦合在一起了?幸运的是,Kanzi为我们提供了DataSource来解决上述问题。
DataSource部分
这部分是MVVM架构中的Model部分,在我们的例子中DataSourse扮演一个什么角色呢?没错,那就是为代码提供一个相对简单清晰的、能对UI界面进行修改的数据源接口,而这部分工作是在KanziStudio中进行的,主要是通过绑定来实现与DataSourse的连接。


代码逻辑部分
介绍完DataSource后,接下来就是代码逻辑部分。还记得我们之前在KanziStudio部分中谈到的问题吗?现在我们有了DataSource,问题自然就迎刃而解了。有了明确的DataSource接口,代码调用起来会很简单。

我们直接通过DataSource给出的setter接口来为UI界面设置修改相关信息,不需要去Kanzi工程中找节点,是不是非常方便呢?值得一提的是,通过这种方式,我们的业务逻辑已经与UI界面完全解耦合了,甚至是可以用于其他软件,UI仅仅是负责显示功能。
代码运行结果如下:

看到这里你是不是对MVVM的理解更加深刻了呢?同时也了解了Kanzi中DataSource的作用。在文章的最后,对MVVM架构进行总结一下。


