读书人

SmartTicket代码阅览笔记(一)

发布时间: 2012-08-28 12:37:01 作者: rapoo

SmartTicket代码阅读笔记(一)
SmartTicket是sun的一个blueprint项目,我想通过学习它的设计,来提高自己的设计、编码水平。欢迎大家一起学习、或者提供好的建议:)

下图是它的UML设计,可以看到,设计是遵循MVC设计模式;毫无疑问,UIController类是一个控制器(Controller),ModelFacade充当的是模型(Model),它使用了Facade(门面)模式。

关于门面模式,门面模式要求一个子系统的外部与其内部的通信必须通过一个统一的门面(Facade)对象进行;使用时机,为复杂的系统提供一个简单的接口、子系统的独立性、层次化结构。 ModelFacade充当了与RemoteModelProxy、SynchronizationAgent、LocalModel打交道的门面(Facade),所以它保存着对其他三个对象的引用。

那么RemoteModelProxy、SynchronizationAgent、LocalModel这三者又分别代表什么呢?
很奇怪,sun的代码没有注释,也没有java doc

首先来看LocalModel
它保存着对RMSAdapter、Preferences、ProgressObserver的引用,看起来,它负责对手机RMS数据的管理,所以处于Model;
其中RMSAdapter采用了适配器(Adapter)模式。
关于适配器模式,是把一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作。Adapter其实是中文变压器的意思。 所以,RMSAdapter就充当了一种适配器,提供了多种方法来操作RMS数据。

RMSCacheHandler中存在一个对于RMSAdapter的引用, 再看看RMSCacheHandler是做什么的?
从名字上看,是控制RMS缓存的,凡是涉及到操作RMS,都用到了适配器模式RMSAdapter。
从UML上来看,RMSCacheHandler其实是和RemoteModelProxy相关的,RemoteModelProxy中有一个对抽象类RemoteModelRequestHandle的引用,而RMSCacheHandler继承自RemoteModelRequestHandle。
Smart Ticket 应用程序包含一个 J2ME 组件和一个 J2EE 组件。运行它要求一个 J2EE 应用服务器(比如 Sun 的 J2EE 参考实现,1.3 版或更高),和任一个带有 Internet 连接的兼容 MIDP 2.0的设备或者合适的仿真程序。如 Sun 的 J2ME Wireless Toolkit 2.0。 Smart Ticket 发行版包括了特别的说明,帮助构建和部署这个应用程序。现在开始:


1.



确保你已经安装以下资源:

* JDK v1.4.1 或更高版本。
* J2EE v1.3.1 或更高版本。
* J2ME Wireless Toolkit 2.0 或更高版本。


2.



设置以下环境变量:

* JAVA_HOME:JDK 安装目录 。
* J2EE_HOME:J2EE RI 安装目录。
* J2MEWTK_HOME:J2ME Wireless Toolkit 安装目录。


3.



启动 J2EE 服务器:





J2EE_HOME/bin/cloudscape -start


J2EE_HOME/bin/j2ee -verbose



4.




配置 J2EE 应用程序。 在 setup.xml 文件中,使用以下 setup 脚本调用 deploy Ant 任务:
大家一起研究一下 4 楼 dodoflying 2007-01-09 引用能贴个源代码上来(不想自己去下载)
代码已经上传 5 楼 wuhua 2007-01-10 好不错
昨天想去下载了
Sun网络慢到掉砸。
超级郁闷。下载下来研究下 6 楼 childpp 2007-03-05 关注中 7 楼 childpp 2007-03-05 楼主可以给个联系方式么?我现在也在看这个东西!希望指教!我的MSN是childpp@hotmail.com 8 楼 childpp 2007-03-06 jdk1.5与这个项目冲突么? 9 楼 dodoflying 2007-03-06 我的邮箱是:dodoflying@gmail.com

读书人网 >移动开发

热点推荐