MVVM(Model-View-ViewModel)介绍
8.1 分离用户界面和业务逻辑
在开发应用程序时,要把用户界面和业务逻辑分离开来,这是每个程序员都知道的常识。分离用户界面和业务逻辑有几个重要的好处:
- 有利于隔离变化。用户界面是最容易变化的,易用性的改进,外观的美化和需求的变化,首先冲击的就是用户界面。如果用户界面和业务逻辑耦合到一起,界面上一点微小的改动都会导致一系列代码的修改,这不但会增加开发的成本和周期,而且这种改进也是很无趣的,让程序员的幸福感直线下降。
- 有利于自动测试。代码中的BUG,越早被发现,修改的成本越低,而单元测试是在早期发现BUG的重要手段。单元测试是自动化的,前期编写测试代码的投入,会因为后期节省测试的时间而获得回报。单元测试代码可以不断积累,为软件构建一道坚固的防火墙,让整个系统越来越稳定。分离用户界面和业务逻辑是提高代码可测试性的重要手段,让编写单元测试程序成为可能。
- 有利于分工合作。用户界面和业务逻辑的耦合,会让用户界面的修改很困难,程序员就会抵触用户界面的改动,让设计师和程序员之间的矛盾加大。分离用户界面和业务逻辑后,设计师的工作成果可以平滑的输出给程序员,让程序员和设计师一起过上共同幸福的生活。
8.2 如何分离用户界面和业务逻辑
分离用户界面和业务逻辑,MVVM是目前最常用的模式。MVVM并非凭空出现,而是由MVC和MVP一路演化而来的,每次演化都是为了解决之前没有解决的问题。
8.2.1 MVC模式
MVC是Model-View-Controller简称,它首次把系统分成Model,View和Controller这三部分,明确的把用户界面和业务逻辑分离开来:
![890de3813d24a2a16e7db85009e5df59.png](https://i-blog.csdnimg.cn/blog_migrate/4a3bfdc39fb44fbf6481cef44bf2e732.jpeg)
- 模型(Model)。简单的说,模型就是业务逻辑。我们经常说面向对象的设计和建模,所建立的模型就是这里的模型,是对现实世界中业务逻辑的抽象。面向对象的建模,就是要找到业务逻辑中有哪些类以及这些类之间的关系。类描述了对象的属性和行为,类是设计时的概念,对象是运行时的概念。对象通常就是业务实体,Model包含一个或多个业务实体。很多人(包括国内一些知名的专家)认为模型就是数据,这是没有透彻理解面向对象的设计导致的,