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
- Android之MVC模式
- Android之MVC模式
- Android之MVC模式
- Android之MVC模式
- Android之MVC模式
- Android之MVC模式
- Android之MVC模式
- Android之MVC模式
- Android之MVC模式
- Android之MVC模式
- Android之MVC模式
- Android之MVC模式
- Android之MVC模式
- Android之MVC模式
- Android之MVC模式
- Android之MVC模式
- Android之MVC模式
- Android之MVC模式
- 有道翻译书签,支持网页翻译和划词翻译
- 开源:ASP.NET MVC+EF6+Bootstrap开发框架
- POJ 3436 ACM Computer Factory (网络流)
- 文件上传到服务器的2种方式
- Bootstrap模板分析:序言
- Android之MVC模式
- php远程抓取网站图片并保存
- 【算法】动态规划笔记
- 打印100以内的素数(Java)
- android Fragments详解六:处理fragement的生命周期
- 开源中国源码分析(二)
- Android程序自启动小结
- Log4j的介绍和使用
- python从包中导入模块