Android中MVP框架的应用
今天详细看了项目代码,大概的了解了项目的业务流程。
在我看来,view层实际上包括了view类和activity以及其包含的自定义视图和布局xml文件。
view类不是视图中的view,意思大概和视图中执行的操作相关。
view类是一个接口其中只包含回调方法,这些方法的具体实现是在实现它的activity中编写的,
present层包含present接口和其实现类,在这些类中通过service和判断逻辑来更深一层的执行业务操作。
重点在于二者之间的包含关系,present中包含activity(实现了view),activity中也包含present对象,activity调用present对象的时候present也可以在内部调用activity中的方法来执行一些操作,这样的回调就可以实现由activity->present->activity的一个操作链。
关于model层,感觉没有用到,可能是偷懒没有写直接包含在service里了。
我们可以简单的举个例子。
(1)先写一个简单的接口作为回调,也就是我之前提到的view:
public interface ExView {
void success();
void error();
}
(2)写一个presenter来执行业务逻辑,这里是test,你可以根据其中执行的结果来回调方法,这里把两个方法都执行一下。
public class ExPresenterImpl implements ExPresenter {
private ExView exView;
public ExPresenterImpl(ExView exView){
this.exView = exView;
}
@Override
public void test(){
Log.d("ExPresenterImpl","test");
exView.success();
exView.error();
}
}
public interface ExPresenter {
void test();
}
(2)最后写Activity: 其实现了ExView接口,并且维护一个presenter对象,可以在activity中调用presenter来执行业务逻辑,避免activity的冗余并且实现了解耦。回调的方法允许了用户将执行的结果再返回到activity中进行处理。
public class ExActivity extends Activity implements ExView {
private ExPresenter ex;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
ex = new ExPresenterImpl(this);
ex.test();
}
@Override
protected void onResume() {
super.onResume();
}
@Override
protected void onPause() {
super.onPause();
}
@Override
protected void onStop() {
super.onStop();
}
@Override
protected void onDestroy() {
super.onDestroy();
}
@Override
public void success() {
Log.d("ExActivity","成功!!");
}
@Override
public void error() {
Log.d("ExActivity","错误!!");
}
}
2021.9.10补充
在presenter中可以维护一个model层对象,在model层中实现数据操作,presenter中通过model对象调用。这样实际通过了presenter将view 和model结合起来。