最近在网上看到很多关于MVP模式书写Android的文章,颇有想法。闲暇之余试了试,感觉确实不错,代码整洁了,心情舒畅了。
所以想写篇博客分享分享,但是鄙人资质尚浅,需站在巨人的肩膀之上
http://blog.youkuaiyun.com/lmj623565791/article/details/46596109
http://gold.xitu.io/entry/56cd79c12e958a69f944984c
很多理论上的知识请移驾上方连接处。
MVP(Model View Presenter)模式 , 分离展示层和业务逻辑层的模式,使两者独立存在 的 模式。原文
- View 对应于Activity,负责View的绘制以及与用户交互
- Model 依然是业务逻辑和实体模型
- Presenter 负责完成View于Model间的交互
View 控制展示 ,通过接口把将要实现的功能抽象出来 ,然后对象的Activity和Fragment 具体实现其功能 。
例: interface AViewModel
{
void showDialog();
}
注意,这里是不能 有 事件处理(业务逻辑)的,只能有一些View的操作。事件处理(业务逻辑)应该是在 Presenter 中进行的。
Activity的小例子在最后给出
Model 数据模型 和 业务模型 等...
数据模型 实体类,也就是JavaBean
业务模型 抽象出的业务逻辑,先写一个接口 ,抽象要执行的业务逻辑(比如登录);
例: interface ADomain
{
void login();
}
Presenter 也就是控制层,业务逻辑的具体实现 。将就上面两个例子接着编...
例:
class APresenter implements ADomain
{
// 抽象的视图控制,Activity 或者Adapter 将实现的他
AViewModel mAViewModel;
public APresenter(AViewModel l){
//通过构造方法赋值,就可以对Activity 进行控制了
mAViewModel=l;
}
public void login(){
//控制Activity 显示 Dialog
mAViewModel.showDialog();
//TODO 执行 登录 的代码
}
}
好了,基本模型就这样了,最后回到Activity
class AActivity extends Activity implements AViewModel
{
public void showDialog(){
//TODO 自己抽象的方法,这里仅仅只有一个,实际开发中肯定不止一个
}
APresenter mPresenter
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
<pre name="code" class="java"> //这样就建立绑定,你也可以在声明变量的时候直接new (即:APresenter mPresenter = new APresenter(this);)
mPresenter =new APresenter(this);
}}
大致的思路就是这样,第一次写博客,鉴于资质太菜,不喜勿喷。