前言
随着项目的需求增加,代码的堆积会造成整个程序臃肿不堪。那么就急切需要了解些实用的架构设计,优化代码结构以及增加扩展性。本文将介绍MVC、MNP、MVVM以及简要介绍下MVVM要使用到的DataBinding双向绑定。
MVC架构
Android原生开发采用XML文件实现页面布局,在Activity中利用Java编写业务逻辑,这种开发模式实际上已经采用了MVC的思想,分离视图和控制器。MVC模式(Model–view–controller)是软件工程中的一种软件架构模式,把软件系统分为三个基本部分:模型(Model)、视图(View)和控制器(Controller)。如下图所示:

- 视图层(View):通常是Android的XML文件。
- 控制层(Controller):Activity,Fragment等。
- 模型层(Model):与数据相关的操作,如对数据库的操作、网络数据的获取等。
但实际上很多时候,Activity/Fragment也承担了视图层的部分功能。比如说有时候控件根据需求动态显示背景或者显示隐 藏等。也就是说控制层和视图层没有很好的解耦,结果就会如下图所示。

MVC代码Demo
定义一个Activity也就是控制层,当用户点击的时候将自己和Model层绑定并请求数据。
public interface OnResultListener {
void onSuccess(String infor);
}
public class MainActivity extends Activity implements OnResultListener, View.OnClickListener {
private DataModel dataModel;
private TextView result;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
dataModel = new DataModel();
}
@Override
public void onClick(View v) {
dataModel.getResult(this);
}
@Override
public void onSuccess(String infor) {
result.setText(infor);
}
}
模型层收到数据后,做耗时操作。耗时操作完毕,返回数据更新视图层。
public interface DataModel {
void getResult(OnResultListener listener);
}
public class DataModelImpl implements DataModel {

最低0.47元/天 解锁文章
558





