android框架的作用,Android框架模式——MVC

1. MVC介绍

MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,是一种框架模式。

Model:模型层,负责处理数据的加载或存储。

View:视图层,负责界面数据的展示,与用户进行交互。

Controller:控制器层,负责逻辑业务的处理。

1.1 作用

将业务逻辑、数据、界面分离的一种代码组织方式,修改界面时无需去修改业务逻辑。

1.2 流程

784bcb8f2da4

MVC.png

1.View接受用户的请求,然后将请求传递给Controller。

2.Controller进行业务逻辑处理后,通知Model去更新。

3.Model数据更新后,通知View去更新界面显示。

1.3 关系

一个模型可以有多个视图,一个视图可以有多个控制器,一个控制器也可以有多个模型。

2. MVC例子实现

Android中一般布局的XML文件就是View层,Activity则充当了Controller的角色。

下面举个简单的例子来实现,点击按钮对数字+1然后重新显示出来。

2.1 Model层

创建一个数据模型,能够保存一个数字,并有一个更新的方法,数据更新完后会通知UI去更改显示的内容。

public class NumModel {

private int num = 0;

public void add(ControllerActivity activity) {

num = ++num;//更新数据

activity.updateUI(num + "");//更新UI

}

}

2.2 View层

View层在Android中对应的就是布局的XML文件。

activity_controller.xml :

android:layout_width="match_parent"

android:layout_height="match_parent"

android:orientation="vertical">

android:id="@+id/tv_show"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="0"/>

android:id="@+id/btn_add"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="点击+1"/>

2.3 Controller层

Android中一般由Activity来充当Controller。Controller一方面接收来自View的事件,一方面通知Model处理数据。

public class ControllerActivity extends Activity {

private TextView mTextView;

private Button mButton;

private NumModel mNumModel;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_controller);

mTextView = findViewById(R.id.tv_show);

mButton = findViewById(R.id.btn_add);

mNumModel = new NumModel();

mButton.setOnClickListener(new View.OnClickListener() {//接收来自View的事件

@Override

public void onClick(View v) {

mNumModel.add(ControllerActivity.this);//通知Model处理数据

}

});

}

public void updateUI(String text) {//更新UI

mTextView.setText(text);

}

}

3. Android中的源码应用

Android中最典型的MVC莫过于ListView了,要显示的数据为Model,而要显示的ListView就是View了,Adapter则充当着Controller的角色。当Model发生改变的时候可以通过调用Adapter的notifyDataSetChanged方法来通知组件数据发生变化,这时Adapter会调用getView方法重新显示内容。具体代码这里就不分析了。

4. MVC的优点

视图层(View)与模型层(Model)解偶,通过Controller来进行联系。

模块职责划分明确。主要划分层M,V,C三个模块,利于代码的维护。

5. MVC的缺点

Android中使用了Activity来充当Controller,但实际上一些UI也是由Activity来控制的,比如进度条等。因此部分视图就会跟Controller捆绑在同一个类了。同时,由于Activity的职责过大,Activity类的代码也会迅速膨胀。

MVC还有一个重要的缺陷就是View跟Model是有交互的,没有做到完全的分离,这就会产生耦合。

6.其他

虽然MVC很简单,但是如果项目比较小且无需频繁修改的话,就可以不用MVC了,避免过度设计,造成维护困难。

鉴于MVC的缺点,诞生了MVP来解决这些问题,下一篇文章继续来说明~

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值