选择显示字体大小

使java代码可移植之一

本文内容摘自即将出版的《symbian os j2me编程指南》一书,关于本书的详细介绍请访问:http://www.china-pub.com/computers/common/info.asp?id=25538

6.1 概述

在本章和下一章,我们将讨论如何使应用程序尽可能地可移植,以及如何编写高效的代码。尽管java(尤其是无线java)并非“编写一次,到处运行”,将java midlet移植到不同的无线设备上通常还是比较简单的。和移植相关的问题源于手机的多样性:不同的堆内存、不同的持久化存储、不同的屏幕尺寸,以及不同的用户输入方式都使得一个应用程序在一系列设备上以一致的行为运行的难度大大增加。一些设备还有可选的api包,还要为每一个操作考虑到网络问题,如允许的jar文件尺寸。
这一章将研究如何开发能在尽可能多的手机上移植的midlet。我们将讨论如何使用设计模式和代码编写准则来帮助移植,使开发者能从自己的努力中获得最大的可重用性。
创建可移植代码的价值被市场上一系列java设备扩大化了。它们中的许多都是相似的;例如,series 60平台为一系列设备提供了一个创建应用程序的方式。甚至在series 60设备中,开发环境也是有不同的。一些手机包括wireless messaging api(jsr 120)和java蓝牙api(jsr 82)。新出的series 60设备,如nokia 6600,支持midp 2.0,早期的设备如nokia 3650,仅支持midp 1.0。symbian系统设备也有不同的用户界面。它们不同大小的屏幕,更显著的是用户输入方式的不同:sony ericsson p900使用一个非常大的触摸屏和一个小的操纵杆,而通常series 60手机都有较小的屏幕并使用键盘和一个方向操纵杆。
然而,这些不同点并不意味着:一个应用程序不得不完全重写以便运行在所有的设备上。不管我们的应用程序使用等form、textfield和list高级组件,还是使用canvas自己绘制和处理事件(或者同时使用这些技术),我们仍然能够做许多工作使得我们的midlet可移植。
最后,核心应用程序应当在不同设备上均保持不变,任何不同都应该是由于不同的用户界面引起。例如,图形操作可能由于较小的屏幕而改变,或者根据不同的用户输入而创建不同的菜单。确保核心应用程序保持不变需要将其从ui中分离,这需要基于一个恰当的模式
开发者除了要创建一个可移植的架构,还要满足不同设备的性能。这需要知道设备支持哪些api并相应更改midlet。
当讨论编程模型时,我们还将讨论symbian系统设备的不同之处,并看到这将影响到应用程序的实现。

6.2 设计模式

已经有许多类型的结构设计可以在面向对象的编程语言如java中采用,这有助于代码的可移植性。虽然我们不打算讨论设计理论的细节,通常在midlet开发中考虑重要的概念还是值得的。传统上,这些设计都是与桌面应用程序或基于服务器的应用程序开发关联的;然而,由于内存和处理器能力的约束对无线应用程序越来越小,这些模式变得愈加重要。下面的章节将介绍两种有用的设计模式

6.2.1 模型-视图-控制器设计模式

这是在gui应用程序中广泛使用的模式。它将应用程序分为3个特定的实体:一个模型、一个视图和一个控制器。每个实体都依赖于其他实体,但是自身拥有特定的功能。模型-视图-控制器(model-view-controller,mvc)模式可以追溯到smalltalk编程语言的ui模型。这3种实体如下:
· 模型(model):也叫做(也许更为恰当)引擎(engine)。模型持有应用程序的数据。它处理来自控制器的请求并改变数据。它和视图关联,当其数据改变后,通知视图更新显示,这样确保数据的最新状态反映到视图上。它还响应来自视图的查询模型状态的请求。简言之,它提供了应用程序的核心业务逻辑。
· 视图(view)。模型视图负责将数据表现给用户。为了响应来自模型的通知,视图获得数据的当前状态并绘画它到屏幕。它还提供接受用户输入的用户界面。
· 控制器(controller)。控制器负责管理应用程序的流程。它响应捕获自视图的用户输入,处理输入并向模型发送指令来相应地改变其数据状态。
一个基本的mvc实现的uml类图如图6.1所示。这些对象间的交互在uml序列图(见图6.2)中可见。

图6.1 mvc模式的一个简单示例
图6.2 mvc模式中对象的交互
mvc模式中的一个思想便是使应用程序的组件之间实现松耦合。它允许数据的表示(视图)从引擎和其数据(模型)中分离。它还允许(同时刷新的)多视图共用一个模型(例如,相同的数据可能被同时表示为一个表格和一个饼图)。实际上,mvc模式的实现要比图6.1所示的简化示例复杂得多,包括多实例的视图类(所有的视图都派生自一个抽象的视图类),可能每个视图都与一个控制器(派生自一个抽象的控制器)关联。

[1] [2]  下一页


 


关键字 本文所属关键字

相关 与本文相关文章

分类 所有文章关键字导航

源码编程相关

Java   Asp   PHP   .Net   XML   C/C++   CGI   VB   Jsp   J2ee   J2se   J2me   EJB   Servlet   Tomcat   Resin   Struts   Weblogic   Eclipse   ANT   GUI   JMS   Web servise   IDEA   Webphere   Hibernate   Spring   Jboss   Applet   Swing   Socket   Javamail   Perl   Ajax   P2P   安全   模式   框架   测试   开源   游戏

SQL数据库相关

My-SQL   Ms-SQL   Access   DB2   Oracle   Sybase   SQLserver   索引   存储过程   加密   数据库   分页   视图  

手机无线相关

3G   Wap   CDMA   GRPS   GSM   IVR   彩信   短信   无线   增值业务

网页设计制作相关

HTML   CSS   网页配色   网页特效   Javascript   VBscript   Dreamweaver   Frontpage   JS   Web   网站设计

网站建设推广相关

建站经验   网站优化   网站排名   推广   Alexa

操作系统/服务器相关

Windows XP   Windows 2000   Windows 2003   Windows Me   Windows 9.x   Linux   UNIX   注册表   操作系统   服务器   应用服务器

图形图像多媒体相关

Photoshop   Fireworks   Flash   Coreldraw   Illustrator   Freehand   Photoimpact   多媒体   图形图像

标准 网站致力的规范