Symbian OS:MVC 设计模式在 SymbianOS 应用程序中的应用分析
来源:互联网 发布:大连理工大学软件学院 编辑:程序博客网 时间:2024/06/05 06:54
简介
MVC设计模式是在20世纪80年代发明的一种软件设计模式,至今已被广泛使用,后来被推荐为 Sun 公司 J2EE 平台的设计模式。
随着Web应用的商业逻辑包含逐渐复杂的公式分析计算、决策支持等,使客户机越 来越不堪重负,因此将系统的商业分离出来。单独形成一部分,这样三层结构产生了。 其中‘层’是逻辑上的划分。[1-3]
体系结构 表现层(Presentation layer):包含表示
mvc模式的体系结构
[5]
代码、用户交互GUI、数据验证。 该层用于向客户端用户提供GUI交互,它允许用户在显示系统中输入和编辑数据,同时 系统提供数据验证功能。
业务逻辑层(Business layer):包含业务规则处理代码,即程序中与业务 相关专业算法、业务政策等等。该层用于执行业务流程和制订数据的业务规则。业务逻 辑层主要面向业务应用,为表示层提供业务服务。
数据持久层(Persistence layer):包含数据处理代码和数据存储代码。数据持久层主要包括数据存取服务,负责与数据库管理系统(如数据库)之间的通信。 三个层次的每一层在处理程序上有各自明确的任务,在功能实现上有清晰的区分, 各层与其余层分离,但各层之间存有通信接口。 [3]
编辑本段模式结构
视图:数据的展现。
视图是用户看到并与之交互的界面。视图向用户
MVC设计模式中的三个模式结构
[6]
显示相关的数据,并能接收用户的输入数据,但是它并不进行任何实际的业务处理。视图可以向模型查询业务状态,但不能改变模型。视图还能接受模型发出的数据更新事件,从而对用户界面进行同步更新。
模型:应用对象。
模型是应用程序的主体部分。 模型代表了业务数据和业务逻辑; 当数据发生改变时,它要负责通知视图部分;一个模型能为多个视图提供数据。由于同一个模型可以被多个视图重用,所以提高了应用的可重用性。
控制器:逻辑处理、控制实体数据在视图上展示、调用模型处理业务请求。
当 Web 用户单击 Web 页面中的提交按钮来发送 HTML 表单时,控制器接收请求并调用相应的模型组件去处理请求,然后调用相应的视图来显示模型返回的数据。[2-3]
编辑本段优点
采用三层软件设计架构后,软件系统在可扩展性和可复用性方面得到极大提高,在资源分配策略设计合理运用的同时,软件的性能指标得到提升,系统的安全性也得到改善。
三层体系结构对Web应用的软件架构产生很大影响,促进基于组件的设计思想, 产生了许多开发Web层次框架的实现技术。较之两级结构来说,三层结构修改和维护上 更加方便。目前开发B/S结构的Web应用系统广泛采用这种三层体系结构。 [3]
编辑本段运行机制
在 MVC 模式中,Web 用户向服务器提交的所有请求都由控制器接管。接受到请求之后,控制器负责决定应该调用哪个模型来进行处理;然后模型根据用户请求进行相应的业务逻辑处理,并返回数据;最后控制器调用相应的视图来格式化模型返回的数据,并通过视图呈现给用户。[3][7]
1.MVC模式概述
MVC 模式包括三个部分:模型(Model)、视图(VIEW)和控制器(CONTROLLER),分别对应于内部数据、数据表示、输入输出控制部分。模型
是软件独立于外部表现的内在抽象,是包含了核心数据和逻辑功能计算的应用,它独立于界面的表达。视图View是模型的外在表现。它从模型中获得
信息,并在屏幕上加以显示。控制器Controller定义用户界面对用户输入的响应,它的职责是对模型中任何变化的传播加以控制。确保用户界面和模型
之间的对应关系,协调着模型和视图的工作。模型和视图的分离使得一个模型可以对应多个视图。模型、视图和控制器之间的关系如下图所示。用户输入表示
用户和用户界面之间的相互交互关系,通过控制器,把用户输入与用户界面连接起来。视图通过控制器来响应用户输入。视图和模型之间是相互协作的关系。
即一个是同得到用户的输入,以此来改变模型状态。同时,模型又将自己的改变状态通知给它的所有视图,而视图在得知这些变化之后,自己做相应
的改变,将视图的改变及时展现给不同的用户。这样做的好处是将用户输入、用户界面的显示和模型分离开来,减小了他们之间的耦合度。MVC将模型
与视图的分离,不仅提高了系统的灵活性和复用性,而且为用户软件界面的提议接哦故的研究奠定了基础。
MVC,model-view-control,这是一个架构模式,也是一种开发模式。
不论设计模式还是架构模式,MVC都是最经典的模式。
Symbian OS作为最热的手机开发平台之一,Symbian OS是一个微内核的系统,它应用了大量的模式进行高度模块化设计,
便于根据需求的变更和新环境进行扩展和改善适应。MVC便是其中一个模式。
回顾一下MVC的含义吧,
MVC设计模式它提供一种能够分别修改软件的不同模块的能力,提高软件的健壮性和复用性。
MVC模式能够帮助软件的设计者使用面向对象的设计原则,比如:开闭原则,通过继承而不是修改存在的基类,增加新的代码和类来扩展设计。Model:包含和操作程序中的数据,它最重要的部分是应用程序的数据结构View:定义数据模型向用户显示的方式;View传递接收到的命令和请求给controller,View是图形接口,它从Model读,并且获取需要显示的数据给用户Controller:定义用户接口对收到的命令和请求的处理,操作Model中的数据并更新View
MVC可以使得开发者根据面向对象编程的基本原则来设计他们的应用程序,开发者在实现之前必须决定应用程序的那些部分是可以扩展的哪些是不行的。设计阶段之后,代码的开发从一些基类开始,可以通过增加新的特别的类来扩展。MVC和OCP是一致的。
在Symbian S60中,MVC的使用是基于Avkon的GUI框架,框架提供基类实现Model,View和Controller。
这些类可以被应用程序设计者扩展。Avkon的基类:-CAknApplication,应用程序的基类-CAknDocument,Modle的基类-CAknAppUI,Controller的基类View的父类AVkon没有提供,但是可以从CONE环境继承。
应用程序架构(Application Framework)
1、S60应用程序架构
S60平台在底层Uikon应用程序框架上添加了一个用户界面层(Avkon)。Avkon提供了一套特别为S60设计的UI组件和应用程序框架。
1.1、S60应用程序结构
1.1.1、模型(Model)—视图(View)—控制器(Controller)模式(MVC)
MVC模式在S60 UI应用程序中是一个通用的设计模式。应用程序被分离成不同的逻辑部分;它们包装了应用程序的不同方面。每个部分都用特殊的任务。MVC模式分离了应用程序设计,使模型(Model)的代码得到重用。
模型(Model):
- 封装了应用程序的状态和功能。
- 通知视图(View)进行切换。
- 响应来自视图(View)的状态查询。
- 呈现模型(View)。
- 接收来自模型(Model)的视图更新通知。
- 将用户的输入发送给控制器(Controller)。
- 定义了应用程序的行为。
- 将用户操作与模型(Model)更新相映射。
- 响应视图(View)切换请求。
1.1.2、S60应用程序结构和MVC
应用程序UI的组成:
应用程序框架的启动对象。 定义了应用程序的性质。 创建文档(CAknDocument)类。
创建AppUi(Controller)。 提供了应用程序数据的持久化功能。
基类的选择依赖于应用程序架构。 处理应用程序事件。 控制应用程序模型(Model)。 负责切换视图(View)。
显示模型(Model)状态。 接收用户输入。 向控制器通知相关事件。 根据模型(Model)变化更新显示。
应用程序引擎(Engine):
封装了应用程序数据和状态。 封装了非UI依赖的功能,能够在其他UI平台重用。 通常以类库的形式实现。 由AppUi直接操作。
1.2、传统的Symbian OS 应用程序架构
1.3、对话框(Dialog)架构
1.4、视图切换架构
1.4.1、创建视图
1.4.2、Avkon视图类
1.4.3、视图资源(AVKON_VIEW)
1.4.4、视图切换
2、事件处理
2.1、命令(Commands)事件
2.1.1、AppUi对命令事件的处理
2.1.2、Avkon视图对命令事件的处理
2.2、按键事件与控件栈
- Symbian OS:MVC 设计模式在 SymbianOS 应用程序中的应用分析
- 设计模式:委托模式Delegation Pattern在MVC中的应用
- PHP单例模式在MVC框架设计中的应用
- PHP单例模式在MVC框架设计中的应用 (
- java MVC设计模式探究——mvc在j2ee中的应用
- 《Symbian OS通用设计模式》 试读地址
- 23种设计模式(11):命令模式在MVC框架中的应用
- 应用MVC设计模式解决J2ME应用程序导航问题
- 应用MVC设计模式解决J2ME应用程序导航问题
- Symbian OS中的Client/Server机制分析
- MVC模式在ASP.NET中的应用
- MVC模式在ASP.NET中的应用
- oscache2在MVC中的应用模式
- MVC模式在Java Web中的应用
- oscache2在MVC中的应用模式
- 命令模式在MVC框架中的应用
- MVC模式在j2me项目中的应用
- MVC模式在ASP.NET中的应用
- makedepend
- SQL 2008 专业课学习,问题小结,长时间更新(初学者开始的)
- android layout_weight
- mac下开发、工作工具推荐
- Eclipse修改背景色值
- Symbian OS:MVC 设计模式在 SymbianOS 应用程序中的应用分析
- linux /dev/urandom和/dev/random的区别
- cvedetails
- select函数及其使用方法
- Android设置默认浏览器
- 关于Autorelease和RunLoop
- httpd: apr_sockaddr_info_get() failed for centos1113
- Android Fragments 详细使用
- Access日期查询