Android开发心得(一)

来源:互联网 发布:iphone健康刷步数软件 编辑:程序博客网 时间:2024/06/05 13:23

Android开发心得之MVC

这一个学期在上潘老师的系统设计与分析课程时,我们小组开发了基于安卓平台的电影购票软件。在开发过程中收获了挺多,现在在课程结束前,把其分享出来。
MVC是软件工程中的一种软件架构模式,把软件系统分为三个基本部分:模型(Model)、视图(View)和控制器(Controller)。


1.什么是 MVC?

Model–view–controller (MVC) is a software architectural pattern for implementing user interfaces on computers. It divides a given application into three interconnected parts in order to separate internal representations of information from the ways that information is presented to and accepted from the user.[1][2] The MVC design pattern decouples these major components allowing for efficient code reuse and parallel development. 维基百科

简而言之就是将应用程序划分为三种组件,模型-视图-控制器(MVC)设计定义它们之间的相互作用。

  • Model:用于封装与应用程序的业务逻辑相关的数据以及对数据的处理方法。Model有对数据直接访问的权力,例如对数据库的访问。Model不依赖于View和Controller,也就是说,Model 不关心它会被如何显示或是如何被操作。但是 Model 中数据的变化一般会通过一种刷新机制被公布。为了实现这种机制,那些用于监视此 Model 的 View 必须事先在此 Model 上注册,从而,View 可以了解在数据 Model 上发生的改变。
  • View:能够实现数据有目的的显示(理论上,这不是必需的)。在 View 中一般没有程序上的逻辑。为了实现 View 上的刷新功能,View 需要访问它监视的数据模型(Model),因此应该事先在被它监视的数据那里注册。
  • Controller:起到不同层面间的组织作用,用于控制应用程序的流程。它处理事件并作出响应。“事件”包括用户的行为和数据 Model 上的改变。

这里写图片描述


2.我们为什么要使用MVC?

最重要的原因就是解耦

它将业务逻辑、数据、界面显示用分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。其中M层处理数据,业务逻辑等;V层处理界面的显示结果;C层起到桥梁的作用,来控制V层和M层通信以此来达到分离视图显示和业务逻辑层。


3.Android下的MVC

在我们的项目开发中,MVC在Android程序中是如下的应用、

- M层:做电影购票软件的业务逻辑操作,比如对电影院线的数据库的存取操作、网络访问操作。我们的项目中bean文件下存放着各种模型的业务逻辑的代码
- 这里写图片描述
这里写图片描述

- V层:应用层中处理数据显示的部分,在Android程序中XML布局可以视为V层,显示Model层的数据结果,即APP的各种界面布局文件。我们的项目中V层主要是在Android下的Layout文件夹下
- 这里写图片描述

- C层:在Android中,Activity用于处理用户交互问题,因此我们项目中认为Activity是控制器,Activity读取V视图层的数据,控制用户输入,并向Model发送数据请求(eg.发起网络请求等)。这里写图片描述这里写图片描述


4.对Android下MVC的再思考

MVC模型看似十分完美,然而却仍有缺陷。原因在于XML作为View层控制能力太弱了,如果我们想要动态的改变一个页面的背景或者动态的隐藏/显示一个按钮,这些都没有办法在XML中做,只能把代码写在activity中,这就造成了activity既是controller层,又是View层的一个现状。
这里写图片描述
此外,MVC还有一个重大缺陷,就是上图中的view层和model层相互可知,这意味着两层之间存在耦合,这对于一个大型程序而言是致命的。
由于MVC有着这样那样的缺点,因此有了MVP和MVVM这两种框架。
但是由于我们在项目开发中学习时间不够充裕,没有及时将下面两个框架应用到我们的项目中,所以在此不过多介绍。

原创粉丝点击