MVC的主要目的是为了视图和数据分离,分离开之后便于管理,及造福后人。代码全部堆在Activity中的现象让开发过程变得极其乏味。
Android中的MVC模式
Android世界中也可以运用到MVC模式。
其中V也就是View层。
M对应Model层,通常用于处理数据库文件,Sharedprefrence,内存缓冲。
而Controller控制层基本上也由Activity层面来进行。
Android中的MVP模式
MVP与MVC模式有些类似,但是又有不同。它的架构图如下:
图片来自百度百科
.M(Model) 数据相关层
.V(View) 视图层,如Activity上的布局(但不限于时Activity,可以是Fragment、自定义View等等)
.P(Presenter) 纽带层,用来连接Model与View.
MVP开发在Android中的基本流程
1. View层定义View.interface,用来定义View的行为。一般由Activity或者是Fragment来实现这个接口,它定义了View视图的各种变化,如设置Textview,加载对话框,更新进度条等。
interface View {
void setPresenter(T presenter);
}
public class MyView extends Activity implements View {
private Presenter mPresenter;
public MyView (Context context) {
super(context);
}
@Override
public void setPresenter(Presenter presenter) {
this.mPresenter = presenter;
}
}
2. Model层定义Modle.interface,这个是用来定义数据层发生变化时的通知接口,因为Model不能直接与View交互,所以它与Presenter交互,然后再通过Presenter间接达到与View的交互。
interface Model {
void methodModel();
}
3. Presenter翻译的意思是主持人,也就是主持场合,控制节奏的意思。在这时Presenter就负责具体的业务逻辑,请求数据,把数据送到Model,或者监听Model的数据变化,接受View层的动作,负责通过通知View层的视图变化。
interface Presenter {
void methodPresenter();
}
public class MyPresenter implements Presenter {
private WeakReference mView;// 此处使用弱引用,避免内存溢出
public MyPresenter (View view) {
if(null != view) {
mView= new WeakReference<>(view);
mView.get().setPresenter(this);
}
}
}
总结:这只是最简单的一种MVP结构,MVP结构还有很多衍生,需要进一步强化学习。此外MVVM结构也不错,选择适合项目的才是最好的。