Android之MVC模式

Android之MVC模式

1.什么是MVC

MVC全称是Modle-View-Controller也就是模型-视图-控制器,他是一种框架模式而非设计模式,
作为框架来说,其主要的用途是对软件设计进行分工的。  
view层:负责向用户展示界面信息。  
model层:负责主要的业务逻辑处理。  
controller层:主要负责从view读取数据,控制用户输入,并向模型发送数据,

2.MVC的优点

对于MVC模式,首先第一个是理解起来比较容易,技术含量并不高,这对开发和维护来说成本较低
也易于维护和修改,其次是耦合性不高,表现层与业务层分离实现各司其职,对开发来说也是
很有利的的,前端工程师专注界面的设计,后端工程师则致力于业务逻辑的完善等。

3.MVC的缺点

对于MVC的缺点也是有很多的,由于它没有明确的定义,所以完全理解MVC模式并不是很容易,
使用MVC模式需要精心计划,由于它的内部原理比较复杂,所以需要花费一些时间去思考。
开发一个MCV模式构架的工程,将不得不花费相当可观的时间去考虑如何将MVC模式运用到应用程序中,
同时由于Model和View要严格分离,这样也给调试应用程序带来了一定的困难。
每个构件在使用之前都需要经过彻底的测试。除此之外的就是由于MVC模式将一个程序分为了
MVC反而会带来更大的工作量以及复杂性。

4.MVC在android中的实现

Android中对MVC的应用很经典,因为对Android本身来说,其界面部分的开发就
涉及了模型-视图-控制器3者的交互,在Android中视图层View一般采用XML文件
进行界面的描述。比如以下的一段比较常见的XML布局文件。

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".view.viewimp.MainActivity">

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Hello World!" />
</RelativeLayout>

对于Controller控制器层部分则当之无愧地由Activity承担了。如下代码

public class Main2Activity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main2);
}
}

而对于Model部分则大多应用于本地的数据文件或网络后去的数据体,很多情况下
我们对这些数据处理也可以放在view层中,比如spinner下拉列表中,需要数据,
我们可以直接从资源文件中获取定义好的数组数据资源。不过一般情况下,我们是
抽取到模型层中去实现数据的获取,然后通过控制器将数据返回到view中。

5.MVC图示

这里写图片描述

6.简单的androiMVC模式应用:

controller层:

public class Main2Activity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    ListView lst = new ListView(this);
    lst.setBackgroundColor(Color.WHITE);
    setContentView(lst);
    //获取数据
    String []data = getResources().getStringArray(R.array.data);

    ArrayAdapter adapter = new ArrayAdapter(this,R.layout.activity_main2,data);
    lst.setAdapter(adapter);
 }
}

model层:

<resources>
<string-array name="data">
    <item>Java</item>
    <item>C</item>
    <item>C++</item>
    <item>PHP</item>
    <item>H5</item>
    <item>Python</item>
</string-array>
</resources>

view层:

<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="15dp"
android:textColor="#000"
>
</TextView>

从上面的小例子可以看到,控制层activity主要起到的作用就是解耦,将试图view和
模型model进行分离,两者在activity中进行绑定或完成其他逻辑。总体来说MVC更
适合规模较大的项目,不太适合中小型项目,虽然上面的小例子中我们切实的感受到
了Android在MVC方面的结构,但是,这个框架并非我们自己完成的,而是有framework
给我们搭建好并提供给我们,在平时的开发中,特别是用Android开发,我们并不常用到
MVC模式去脱离Android UI系统构建自己的框架结构

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值