基于MVC模式的J2ME应用程序框架设计

发布者:760802csy最新更新时间:2007-04-12 来源: 单片机及嵌入式系统应用关键字:图形  尺寸  数据  模式 手机看文章 扫描二维码
随时随地手机看文章

1 J2ME应用程序框架的现状

Sun公司在1999年6月推出了J2ME(Java 2 MicroEdition,Java 2袖珍版)。J2ME是专门为那些使用有限电源、有限网络连接以及有限图形用户界面能力的设备开发的,满足了消费电子和嵌入式设备开发的需要。

而7年后的今天,消费电子和嵌入式设备发展迅速。硬件设备速度越来越快,存储容量也越来越大,这也就自然带动了软件的发展。MIDP 2.0和CLDC 1.1也相继问世,各种各样的JSR也层出不穷。

硬件平台和软件平台的飞速发展自然带动了人们需求的增长,也就使得现在的应用程序越来越复杂。以手机游戏为例:以前的手机游戏,一般代码必须限制在64 KB以内;而现在,大部分手机的这种限制已经取消。上百KB的游戏已很常见,甚至有的J2ME游戏已经超过2 MB。

通常来说,J2ME程序都是比较小的,多数在100 KB以下。而且其中大部分是图片和声音,代码只占其中很少一部分。在J2ME程序比较小时,为了提高程序的执行效率,通常的做法是只用一个类完成整个应用程序,在回调函数commandAction()中完成所有界面切换的工作。例如:

这种模式的好处在于代码量最小,能得到最小的jar包尺寸,执行起来效率也最高;而且,因为所有界面都在同一个类中,它们可以很方便地共享数据。

但如果界面很多,程序很大,这种模式就体现出它的劣势了。一方面,几千行的代码集中在一个类里,调试和维护非常不方便。另一方面,由于很多界面都在同一个类中共享数据,使得它们的耦合度大大提高。如果要替换或修改其中某个界面,很可能会影响到其他界面。这就给开发程序带来了很大的不便。

随着嵌入式硬件的发展,J2ME软件的复杂度也越来越大,上述设计模式已不能适应嵌入式发展的需求。这就需要一个更好的设计模式来取代以前的简单设计模式。下面就介绍一下如何把MVC设计模式应用到J2ME程序设计中。

2 MVC模式的简介

MVC由Trygve Reenskaug提出,首先被应用在SmallTalk-80环境中,是许多交互和界面系统的构成基础,Microsoft的MFC基础类也遵循了MVC的思想。目前这种模式已经非常成熟,并在WEB Application的开发中广泛使用,apache的开源项目struts就是典型的例子。

MVC的英文全称是Model-View-Controller,即把一个应用的输入、处理、输出流程按照Model、View、Con-troller的方式进行分离。这样一个应用被分成3个层——模型层、视图层和控制层。

模型、视图与控制器的分离,使得一个模型可以具有多个显示视图。如果用户通过某个视图的控制器改变了模型的数据,那么所有其他依赖于这些数据的视图都应反映出这些变化。因此,无论何时发生了何种数据变化,控制器都会将变化通知所有的视图,实现显示的更新。这实际上是一种模型的变化一传播机制。模型、视图、控制器三者之间的关系和各自的主要功能如图1所示。

3 基于MVC模式的J2ME应用程序框架

MVC是一种很好的客户端软件设计模式,但目前一般只用于PC上。以JAVA为例,目前已经可以看到MVC大量地应用在J2EE和J2SE上,可是几乎还很少见到在J2ME上使用MVC模式。这是为什么呢?有以下两点原因:

① 大部分的J2ME应用都很简单,开发周期也很短,很多开发人员偏爱把所有代码写在一个类中,认为没有必要使用复杂的设计模式;

② 使用MVC模式在某种程度上会增大代码的体积,并且有可能在一定程度上影响程序的执行效率,这在资源相对有限的J2ME系统上是一个不可忽视的问题。

可是随着嵌入式硬件的发展,移动设备的性能有了很大的提高,从而带动了应用软件的发展。J2ME应用软件变得越来越复杂,如果还像以前那样使用一个类来完成所有的代码,必将使得程序可读性差、扩展性差、可维护性差。然而,如果把MVC模式应用在J2ME应用程序设计中,就可以解决以上的问题。下面列举并分析几种在J2ME中比较适合的MVC模式。

3.1 单一控制器的MVC模式

MVC模式是大家都比较熟悉的,整个程序中使用同一个Controller来控制界面的切换和事件的处理等,如图2所示。

在J2ME应用程序中,界面的切换是比较常见的操作,利用这种单一控制器的MVC模式,可以很容易地实现界面的切换,如图3所示。

由于界面切换流程都在这个Controller中进行管理,所以程序流程制定得非常清晰。但是由于只有一个控制器,所以如果界面很多、很复杂,就会使得这个控制器十分庞大,影响到开发效率。

3.2 多个控制器的MVC模式

当应用程序界面很多时,可以改变这种情况使用多个控制器的MVC模式,如图4所示。

在这种模式下,按照程序模块把界面分成若干个部分,每个部分使用一个控制器来控制。这样做的好处是程序模块划分得很清楚,程序结构更加清晰,也不至于使得一个控制器过于庞大;缺点是程序的类数量更多,控制器之前增加了通信开销。

3.3 简化的MV模式

上面的两种程序设计模式已经很常见于PC上的应用软件设计,包括WEB应用或J2EE中的设计。但是通常来说,由于基于移动设备的J2ME应用软件复杂程度相对PC上的要低许多,有时候本来就只有几个类,如果完全照搬PC上的MVC模式,反而会使程序框架变得更加复杂。这时,可以采用以下的一种变形:MV模式(或称为MC-V或M-VC模式),如图5所示。

在这种模式中,由于去掉了控制器,于是把控制器的功能合并到View或Model中。如果把Controller合并到View中,则可称其为M-VC模式;如果把Controller合并到Model中,则可称其为MC-V模式。

3.4 更加简化的V模式

如果认为上面这种简化的MV模式还是过于复杂,那么可以考虑下面的V模式,如图6所示。

在这种模式中,已经完全省略了Model和Controller,只剩下View了。界面的切换和数据的处理都在各个界面的View中独立完成。这样使得类的数量极大地减少,程序执行效率有一定的提高,可是从另一个方面来说,程序的耦合度也增大了。所以,一般来说并不推荐使用这种模式,只有在程序十分简单、数据量很小时才使用。

4 MVC模式应用在J2ME上的优缺点

MVC模式作为一种已成熟应用在PC客户端的设计模式,其优点是不言而喻的。这些优点同样也在J2ME上得到了很好的体现:

① MVC最大的优点就在于它把一个应用分成了3层,这样程序设计的灵活性就大大增加了。例如,一个应用的业务流程或者业务规则的改变只须改动MVC的模型层,而界面表现方式的改变则只须改动MVC的视图层。

② 将MVC分离可以让不同的专家负责不同的模块。一般情况下,M部分由熟悉数据库、网络传输的专家负责;V部分则交给对UI有研究的专家。分工意味着可以提高效率并可以按照传统的责任划分来处理软件开发过程,使开发者可以专心于一个领域,从而极大地提高了软件开发的效率。

③ 模型的部分,因为足够抽象,可以方便地重复利用,符合OO的思想。另一方面可以利用J2meUnit等单元测试工具对模型进行单元测试,以保证工程质量。

然而MVC模式也存在着一些缺点,而这些缺点在J2ME应用上体现得更加明显:

① MVC模式应用于J2ME上的最大缺点莫过于增大了代码体积。据不完全统计,使用了MVC模式后,代码体积约是不使用MVC的1.5倍。这对PC上的客户端软件来说可能不算什么,可是对于存储容量十分有限的移动设备则是致命的。

② 模型、视图与控制器分离,它们之间传递数据时会耗费一定的系统时间,这或多或少会降低程序的运行效率。而程序体积的膨胀也使得J2ME在装载类时会耗费更多的时间,也从一定程度上损害了程序的性能。

③ MVC的3个部件定义并不具体,对于3个部件的具体功能还存在着一些争议。这给初学者留下不少的陷阱,加大了使用MVC模式的难度。

结 语

综上所述,当J2ME应用程序比较庞大时,将MVC设计模式应用于程序的框架设计是一个不错的选择;而当应用程序比较简单时,MVC模式的缺点就暴露出来了,这时可以考虑使用MVC的简化模式——MV模式,甚至是V模式。目前,笔者已将MVC模式应用于J2ME手机播客软件中,取得了良好的效果。

关键字:图形  尺寸  数据  模式 引用地址:基于MVC模式的J2ME应用程序框架设计

上一篇:ARM内核目标系统中的代码运行时间测试
下一篇:基于MVC模式的J2ME应用程序框架设计

推荐阅读最新更新时间:2024-05-02 20:35

苹果调整iPad策略 以满足小尺寸平板市场需求
    3月1日消息,据国外媒体报道,市场调查机构NPD DisplaySearch周四在官方博客上表示,苹果计划在今年出货5500万台iPad mini和3300万台全尺寸iPad。此预期相比该公司去年12月公布的4000万台iPad mini和6000万台全尺寸iPad的目标,存在明显重大的改变。 如果苹果在今年能够售出8800万台iPad,这将较其2012年5831万台的销量显著增长。 从去年12月到今年1月,苹果全尺寸iPad的出货量由740万台突然“崩溃”至130万台,而与此同时,谷歌Nexus 7和苹果iPad mini等小尺寸产品,出货量则由1200万台增长至1400万台。苹果显然对此改变也开始调整其2013年销售计
[手机便携]
移动云计算:模式与挑战
在过去的一年,云计算技术被认为是“网络的未来”,据赛迪顾问预测,2010-2013年,中国云计算服务市场规模年均复合增长率将达到91.5%。云计算的发展并不局限于PC,随着移动互联网的蓬勃发展,基于手机等移动终端的云计算服务已经出现。移动云计算已经成为我们日常生活的一部分。 移动互联网是移动云计算发展的主要推力,随着3G的普及,移动云计算将引来高速发展。工业和信息化部3月30日发布的通信业运行报告显示,1-4月份,全国3G用户净增3054.7万户,达到15897.1万户。 移动云计算有广泛的应用。在商业领域常见的应用有工作派遣、日程安排、内部邮件、工作流程等移动企业管理相关服务,也有后勤、库存控制等移动商务应用。个人用户的应用
[网络通信]
物联网改变物流行业的六大革命性商业模式
物联网(IoT)正在改变着我们的生活方式,从家庭烹饪和储存食物到跟踪货物从工厂生产到最终放在货架上。物流行业正在广泛采取物联网技术,供应链如何受益于物联网呢?以下列举了六点。 1.利用资产跟踪改进库存 库存系统旨在帮助主管和企业主跟踪他们手头的产品,但这些系统只有依靠手动输入来更新库存数量。而物联网通过为供应链中的每件产品提供实时位置信息,将资产跟踪提升到新的水平,只需在包装上添加一个小型RFID或蓝牙跟踪器即可。 物联网资产跟踪通过向仓库管理软件提供实时跟踪数据,帮助公司密切关注其库存水平,防止短缺以及避免因盗窃或浪费造成的损失。 2.改善供应链透明度 供应链透明度已经成为企业主越来越关注的问题,因为消费者正在做出更加环保的选择
[物联网]
数据、物联网与移动技术将成为战胜医疗瓶颈的关键
 根据全球开放式标准化整合通讯与协同作业(UC&C)公司 Polycom 对医疗专业人士的最新调查,资金和医疗服务可及性是妨碍医疗基础设施有效发展的两大全球性障碍。下面就随网络通信小编一起来了解一下相关内容吧。 这项调查结果亦发现,从地区来看,来自亚太(20%)以及欧洲、中东和非洲(30%)的受访者认为,人口高龄化将会是 2025 医疗蓝图的最大挑战;而医疗服务基础设施承受的巨大需求则是北美地区医疗产业面临的最大压力。 这项由来自世界各地 1,200 多位医疗产业专业人士参与的调查显示,移动、物联网(IoT)和大数据等领域的技术发展提供了一种有望在 2025 年之前克服医疗瓶颈的方式。然而,为了达成此一目标,资深技术专家必须在
[网络通信]
从栅极到电网,讲述英特尔的数据中心能效故事
2011年11月,中国北京——随着云计算的普及和移动数据的爆炸性增长,我们正在面对一个难以支持的用电量快速攀升问题。据估算,当今数据中心消耗了全球约1.5% 的电能i,年度成本高达260 亿美元ii。从单个晶体管层面到处理器、服务器平台、数据中心和电网,英特尔提供了一整套技术来应对这一能源挑战。 今天,英特尔概括介绍了一系列能够显著提高数据中心能效的创新技术,其中包括英特尔®智能功耗节点管理器、英特尔®数据中心管理器、高环境温度(HTA)数据中心及若干如功耗和散热感知调度(PTAS)和英特尔®服务器电池备份解决方案这样的等未来型技术。 散热环境 移动革命加速了云计算的部署,数据中心正面临着空前的电力压力。受到传统硬件、现有设
[嵌入式]
STM32学习笔记——GPIO工作原理(八种工作模式
  STM32F103RCT6一共有4组IO口,一共有16*3+3=51个IO口    GPIOA0~A15   GPIOB0~B15   GPIOC0~C15   GPIOD0~D2 一、GPIO 功能描述   每个GPI/O端口有两个32位配置寄存器(GPIOx_CRL,GPIOx_CRH),两个32位数据寄存器(GPIOx_IDR和GPIOx_ODR),一个32位置位/复位寄存器(GPIOx_BSRR),一个16位复位寄存器(GPIOx_BRR)和一个32位锁定寄存器(GPIOx_LCKR)。 STM32 的 IO 口可以由软件配置成如下 8 种模式: 1、输入浮空 2、输入上拉 3、输入下拉 4、模拟输入 5、开漏
[单片机]
STM32学习笔记——GPIO工作原理(八种工作<font color='red'>模式</font>)
LED应用提升大尺寸背光模块可望达5.9亿片
由于LED相关应用出货的提升,根据统计,2010年全球大尺寸背光模块产量将攀升至5.9亿片,年成长率达14.5%,是近年来TFT LCD面板零组件中成长较高的区块。    近年来,由于CCFL厂受需求减少与价格滑落的双重冲击,造成CCFL产业较难寻觅长期发展的出路,也使得CCFL业者纷纷转向投靠LED阵营,加上2010年由于LED终端产品包括液晶电视(LCD TV)与液晶监视器均开始放大量出货,因此也连带让背光模块市场大幅成长,整体背光模块厂的出货与营收均呈现增长态势。    根据Displaybank统计,2009年全球背光模块市场产量约达5.2亿片,估计2010年产量将超过5.9亿片,年增幅达到14.5%,主要是LE
[电源管理]
stm32外部时钟模式1和模式2区别
来自定时器自身输入通道1或通道2的输入信号,经过极性选择和滤波以后生成的触发信号,连接到从模式控制器,进而控制计数器的工作; pwm1和pwm2的区别: pwm1: 向上计数时,一旦TIMx_CNTTIMx_CCR1时通道1为无效电平(OC1REF=0),否则为有效电平(OC1REF=1)。 pwm2: 在向上计数时,一旦TIMx_CNTTIMx_CCR1时通道1为有效电平,否则为无效电平。
[单片机]
小广播
最新嵌入式文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved