MVC, MVP, MVVM

MVC

M 表示 Model , 专门用来处理业务逻辑,不干别的事情。 

V 表示View, 专注页面布局和数据显示。 

C 表示Controller  翻译用户的输入,操作模型和视图。

例如,用户在界面点击了一个“计算”的按钮,View 把计算的请求传递给Controller,Controller找到或者创建Model,执行业务逻辑:计算薪水。

640?wx_fmt=png

MVC的缺点:依赖太多

View 依赖Controller和Model

Controller依赖View和Model

Model 和View的关系虽然很弱, 但是也需要某种方式来通知View进行数据更新。

MVP

可以改变一下Controller, 把Model和View完全隔离开,让他们单独变化。

640?wx_fmt=png

让Presenter调用View的方法去设置界面,仍然需要大量的、烦人的代码,这实在是一件不舒服的事情。

能不能告诉View一个数据结构,然后View就能根据这个数据结构的变化而自动随之变化呢?

 

MVVM

public class SalaryViewModel{
    String grossSalary;  //税前收入,和View中的相关字段对应
    String netSalary;    //净收入,和View中的相关字段对应
    String tax;          //个人所得税,和View中的相关字段对应
    ...... 
    boolean  isCalculating;  // 一个标志位,表示正在计算 
    String errMsg;           // 如果出错的话,记录出错消息。
}

当用户在界面上点击“计算”按钮的时候, 你们需要设置一个SalaryViewModel中的标志位:

salaryViewModel.isCalculating = true;

这样View 中就可以自动给用户展示一个消息:“正在计算....”

当薪水计算完成的时候, 如果没有错误,SalaryViewModel 中grossSalary, netSalary,tax等属性就有了值。 与此同时View 中对应的内容也会更新, 不用你们手工去设置, 很方便吧?

猜你喜欢

转载自blog.csdn.net/odyyy/article/details/86700084