对框架来说,通常是对代码的重用,而对设计来说通常是对设计的重用。框架面向于一系列相同行为代码的重用,而设计则面向的是一系列相同结构代码的重用,而我们平常所说的架构则介于框架和设计之间。
框架是大智慧,用来对软件设计进行分工;设计模式是小技巧,对具体问题提出解决方案,以提高代码复用率,降低耦合率。
一、MVC
MVC是一种框架模式而非设计模式。
二、MVP
MVP能够有效地降低View复杂性,避免业务逻辑被塞进View中,使得View变成一个混乱的“大泥坑”。MVP模式会解除View和Model的耦合,同时又带来良好的可扩展性、可测试性、稳定性、可维护性,保证了系统的整洁性、灵活性。
MVP模式可以分离显示层和逻辑层,它们之间通过接口进行通信,降低耦合。同时使得每个类型的职责相对单一、简单。避免了大量的“胖”的程序存在。它有效地将业务逻辑、数据处理等工作从Activity等View元素中抽离出来,使得每个类尽可能简单,同时每个模块能够独立进行演化。
三、MVVM
与MVP不同的是,在ViewModel里面有一个叫做Binder或DataBinding Engine的东西,之前在MVP中由Presenter负责的View和Model之间的数据逻辑操作就交由这个Binder去处理,而在View中我们只需要声明View上显示的内容是Model的哪一块数据,将其与之绑定在一起即可,最后当ViewModel对Model层的相关数据进行更新的时候,Binder会将更新后的数据传递给View,View则根据新的数据刷新自己,同样地,当用户对View层操作的时候,如果涉及对数据的更新,Binder同样也会把数据更新到Model层。我们将上述View和Model之间的这种数据刷新方式称为双向数据绑定。
MVVM是框架模式,而DataBinding只是我们用来实现MVVM的一种工具,其本质是帮助我们实现MVVM中Binder的功能。