Android之MVC模式

来源:互联网 发布:轻薄笔记本电脑 知乎 编辑:程序博客网 时间:2024/05/17 02:11

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 {@Overrideprotected 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 {@Overrideprotected 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 0
原创粉丝点击