一、MVC
1、M:model层,数据交互层
2、V:视图层,展示界面
3、C:控制层,一般指activity或者fragment
优点:控制器c(activity或者fragment)发出指令,数据操作在model层,耦合性降低
缺点:视图层v是xml布局,很少做业务逻辑,这样控制器(activity或者fragment)
既充当了控制层c,又充当了视图层v,代码还是会比较臃肿,v和m的耦合性高
二、MVP
1、M:model层,数据交互层
2、V:界面的业务处理(activity或者fragment界面的业务处理,比如获取输入框的账号密码等)
3、P:activity或者fragment通过p发出指令,比如登录按钮发出的登录指令
举个登录的案例
LoginActivity点击登录按钮,
实例化一个Presenter,LoginPresenter loginPresenter=new LoginPresenter(this) (this代表LoginActivity,LoginActivity是Loginview接口的实现类,Loginview定义了获取账号密码的方法),
调用loginPresenter.login()(就 可以通过传递过来的loginview对象获取账号密码去登录请求了),
login()通过loginModel去做数据交互,交互结果通过OnLoginListener接口回调给loginPresenter,
loginPresenter收到回调结果后,调用loginview对象定义的toast、跳转等方法。
这样Activity就只充当了发出指令,界面业务处理的调度者,Presenter作为连接View和Model的桥梁,View和Model没有直接联系,完全解耦
网友评论