`
daibalusu
  • 浏览: 343883 次
文章分类
社区版块
存档分类
最新评论

MVC,Android体系结构,常用设计模式

 
阅读更多

//首先是Android系统结构图

linux kernel:负责硬件的驱动程序、网络、电源、系统安全以及内存管理等功能。

  libraries和androidruntime:libraries:即c/c++函数库部分,大多数都是开放源代码的函数库,例如webkit,该函数库负责android网页浏览器的运行,例如标准的c函数库libc、openssl、sqlite等,当然也包括支持游戏开发2dsgl和3dopengles,在多媒体方面有mediaframework框架来支持各种影音和图形文件的播放与显示,例如mpeg4、h.264、mp3、aac、amr、jpg和png等众多的多媒体文件格式。android的runtime负责解释和执行生成的dalvik格式的字节码。

  applicationframework(应用软件架构),java应用程序开发人员主要是使用该层封装好的api进行快速开发。

  applications:该层是java的应用程序层,android内置的googlemaps、e-mail、即时通信工具、浏览器、mp3播放器等处于该层,java开发人员开发的程序也处于该层,而且和内置的应用程序具有平等的位置,可以调用内置的应用程序,也可以替换内置的应用程序。

  上面的四个层次,下层为上层服务,上层需要下层的支持,调用下层的服务,这种严格分层的方式带来的极大的稳定性、灵活性和可扩展性,使得不同层的开发人员可以按照规范专心特定层的开发。

  android应用程序使用框架的api并在框架下运行,这就带来了程序开发的高度一致性,另一方面也告诉我们,要想写出优质高效的程序就必须对整个applicationframework进行非常深入的理解。精通applicationframework,你就可以真正的理解android的设计和运行机制,也就更能够驾驭整个应用层的开发。

  2,android的官方建议应用程序的开发采用mvc模式。何谓mvc?先看看下图

  mvc是model,view,controller的缩写,从上图可以看出mvc包含三个部分:

  l模型(model)对象:是应用程序的主体部分,所有的业务逻辑都应该写在该层。

  l视图(view)对象:是应用程序中负责生成用户界面的部分。也是在整个mvc架构中用户唯一可以看到的一层,接收用户的输入,显示处理结果。

  l控制器(control)对象:是根据用户的输入,控制用户界面数据显示及更新model对象状态的部分,控制器更重要的一种导航功能,想用用户出发的相关事件,交给m哦得了处理。

  android鼓励弱耦合和组件的重用,在android中mvc的具体体现如下:

  1)视图层(view):一般采用xml文件进行界面的描述,使用的时候可以非常方便的引入,当然,如何你对android了解的比较的多了话,就一定可以想到在android中也可以使用javascript+html等的方式作为view层,当然这里需要进行java和javascript之间的通信,幸运的是,android提供了它们之间非常方便的通信实现。

  2)控制层(controller):android的控制层的重任通常落在了众多的acitvity的肩上,这句话也就暗含了不要在acitivity中写代码,要通过activity交割model业务逻辑层处理,这样做的另外一个原因是android中的acitivity的响应时间是5s,如果耗时的操作放在这里,程序就很容易被回收掉。

  3)模型层(model):对数据库的操作、对网络等的操作都应该在model里面处理,当然对业务计算等操作也是必须放在的该层的。

  3,设计模式和ioc(控制反转)

  毫无疑问,android的之所以能够成为一个开放的气象万千的系统,与设计模式的精妙应用是分不开的,只要你稍微用心观察,就会发现在android中到处都是a设计模式或者设计模式的联合运用,一下的设计模式是您想游刃有余的驾驭android必须掌握的:

  ltemplatemethod模式

  lfactorymethod模式

  lobserver模式

  labstractfactory模式

  ladapter模式

  lcomposite模式

  lstrategy模式

  lstate模式

  lproxy模式

  lbridge模式

  literator模式

  lmediator模式

  adapter模式

  android框架魅力的源泉在于ioc,在开发android的过程中你会时刻感受到ioc带来的巨大方便,就拿activity来说,下面的函数是框架调用自动调用的:

  protectedvoidoncreate(bundlesavedinstancestate);

  不是程序编写者主动去调用,反而是用户写的代码被框架调用,这也就反转了!当然ioc本身的内涵远远不止这些,但是从这个例子中也可以窥视出ioc带来的巨大好处。此类的例子在android随处可见,例如说数据库的管理类,例如说android中sax的handler的调用等。有时候,您甚至需要自己编写简单的ioc实现,上面展示的多线程现在就是一个说明。
分享到:
评论

相关推荐

    基于 MVC 模式的博客(BLOG)系统的设计与实现

    博客(BLOG)是目前互联网上流行的信息发布交流工具。本文采用 MVC模式设计实现了 一个典型的博客系统,对系统的体系结构进行了详细的阐述,并给出了相应的实现模型,该 系统具有高效、稳定、易维护等特点。

    基于Android的手机导航系统设计与实现(论文+源码)-kaic.docx

    ⑴ 对导航应用、智能手机操作系统和 GPS 技术作了介绍,研究分析了Android 系统的 系统特征和体系结构,对高德地图 API 和其他开发工具进行了说明,并介绍了开发环境的 具体构建过程。 ⑵ 介绍了 Socket 套接字的...

    coupon.zip

    本系统的总体设计采用了 B/S 和 C/S 模式的体系结构,项目数据存储在区块链和关系型数据库中,对 MySQL 数据库的操作,使用 Mybatis 框架。对以太坊节点的操作,目前知道的有 JavaScript 封装的 web3.js,所以凡是...

    移动终端投票系统的设计与实现.kdh

    设计了该系统的体系结构,该系统由服务器端、移动终端和无线局域网三部分组成,确定采用MVC和DAO设计模式和C/S结构构建该系统。  2、针对现有的身份认证方案的缺点提出了适合本系统的、有效的双向身份认证方案,本...

    软件专业调研报告(2).doc

    岗位要求: 精通java基础,及常用java设计模式,深入理解MVC编程模式,了解UML相关知识。 掌握struts、spring、hibernate等主流java开源框架技术。 熟练掌握WEB应用程序设计相关的jsp、javascript、ajax、css、html...

    软件专业调研报告.doc

    岗位要求: 精通java基础,及常用java设计模式,深入理解MVC编程模式,了解UML相关知识。 掌握struts、spring、hibernate等主流java开源框架技术。 熟练掌握WEB应用程序设计相关的jsp、javascript、ajax、css、html...

    软件专业调研报告(1).doc

    岗位要求: 精通java基础,及常用java设计模式,深入理解MVC编程模式,了解UML相关知识。 掌握struts、spring、hibernate等主流java开源框架技术。 熟练掌握WEB应用程序设计相关的jsp、javascript、ajax、css、html...

    软件专业调研报告.docx

    岗位要求: 精通java基础,及常用java设计模式,深入理解MVC编程模式,了解UML相关知识。 掌握struts、spring、hibernate等主流java开源框架技术。 熟练掌握WEB应用程序设计相关的jsp、javascript、ajax、css、html...

    android基础知识

    Android开发人员基础 该存储库包含Android开发人员基础知识课程的示例,入门代码和解决方案。 介绍 该存储库中的每个示例都与Android开发人员基础知识... 将数据与用户界面分开的软件体系结构模式,例如MVP,MVC或MVA。

    软件专业调研报告(2).docx

    岗位要求: 1、精通java基础,及常用java设计模式,深入理解MVC编程模式,了解UML 相关知识。 2、掌握struts、spring、hibernate等主流java开源框架技术。 3、熟练掌握WEB应用程序设计相关的jsp、javascript、ajax、...

    MVVMBaseLib:用于mvvm架构的包装器

    MVVM设计模式与众所周知的MVC模式类似,因为M(模型)和V(视图)相对相同。 唯一的区别在于C(控制器)和VM(视图模型)之间。 该库提供了MVVM体系结构和DataBinding的一些基本功能。 模型 表示数据+状态+业务...

    matlab代码做游戏-coding-repo:新的GitHub帐户

    以MVC模式设计的交互式应用程序,它集成了一个后端数据库,并在导航体系结构中利用了数据绑定,以防止片段通信中的数据丢失。 包括各种UX设置以增加可访问性。 tic_tac_toe:Java。 使用minimax算法和alp

    史上最好传智播客就业班.net培训教程60G 不下会后悔

    常用数据结构(List、Dictionary、Array)、多态、常用设计模式、反射、常用.net类库、泛型、IO流、委托事件、正则表达式、XML、反射、GC等。 2、数据库开发及ADO.Net(6天) 核心技术课程 数据库开发基础、...

    微服务架构和基于容器参考应用程序eShopOnContainers.zip

    该参考应用程序提出了一个简化的面向服务的体系结构实现,通过综合应用程序引入诸如.NET Core与Docker容器之类的技术。然而,这个引用应用程序并不是要解决大型和关键任务的分布式系统中的所有问题,只是让开发人员...

    JAVA上百实例源码以及开源项目

    此时此景,笔者只专注Android、Iphone等移动平台开发,看着这些源码心中有万分感慨,写此文章纪念那时那景! Java 源码包 Applet钢琴模拟程序java源码 2个目标文件,提供基本的音乐编辑功能。编辑音乐软件的朋友,这...

    JAVA上百实例源码以及开源项目源代码

    此时此景,笔者只专注Android、Iphone等移动平台开发,看着这些源码心中有万分感慨,写此文章纪念那时那景! Java 源码包 Applet钢琴模拟程序java源码 2个目标文件,提供基本的音乐编辑功能。编辑音乐软件的朋友,这...

Global site tag (gtag.js) - Google Analytics