当前位置: 编程技术>移动开发
本页文章导读:
▪SmartTicket代码阅览笔记(三) SmartTicket代码阅读笔记(三)
前两篇主要描述了我学习smart ticket的Model部分的过程,总体感受是,使用了很多的设计模式(Facade,Adapter,Proxy,职责链)。在我自己的代码中,一般没有考虑过.........
▪ 再次贡献小弟我的心血(Wap Explorer) 再次贡献我的心血(Wap Explorer)
详细地址请看
一个未完成的Wap浏览器
这几天不断的有网友,朋友,公司来询问我关于Wap浏览器,即时信息内容设计,以及低级UI组件设计的问题。为了解答.........
▪ 可否动态的创建一个类 能否动态的创建一个类
请问能否根据动态获得的参数而动态的创建一个类?
1 楼
LucasLee
2007-05-04
这个对于静态类型的Java应当是不可以的.
2 楼
javavsnet
2007-05-.........
[1]SmartTicket代码阅览笔记(三)
来源: 互联网 发布时间: 2014-02-18
SmartTicket代码阅读笔记(三)
前两篇主要描述了我学习smart ticket的Model部分的过程,总体感受是,使用了很多的设计模式(Facade,Adapter,Proxy,职责链)。在我自己的代码中,一般没有考虑过这么多模式的使用。
我记得在一篇帖子中,robbin曾将设计模式和围棋的定式做了比较,我虽然不懂得“定式”,原来也翻看过《建筑的永恒之道》这本书,我想,设计模式也就是经过软件开发者长期摸索而推出的解决普遍问题的通用方式吧。
就拿建筑来说,我生活的13朝古都西安城就有很多古代建筑,比较著名的唐朝建筑--大雁塔,明朝建筑--钟楼,明代城墙等等,只要留心就会发现,每个朝代的建筑物其实都有自己的“个性”,例如唐代建筑的屋檐和檐顶的勾角就很有特色,所有唐代的建筑仿佛都在遵循一样的风格;这就好比软件上的设计模式,如果大家遵循一种设计上比较成熟的方式,就能够满足易于扩展、拥抱变化等好处。
总之,别人好的设计经验,是需要我不断去学习的。
在smart ticket中,View和Controller的设计还是必要容易理解的。
UIController类充当了一个大大的控制器。说它是大大的,是因为所有和View控制相关的功能都在这一个类中完成。(随后我应该分析一个有多个Controller的程序)
View是由
private Alert alert;
private MainMenuUI mainMenuUI;
private MySettingsUI mySettingsUI;
private ManageTheaterSchedulesUI manageTheaterSchedulesUI;
private DefaultsUI defaultsUI;
private AccountSetupUI accountSetupUI;
private ChooseMovieUI chooseMovieUI;
private SeatingPlanUI seatingPlanUI;
private SignOnUI signOnUI;
private PurchaseTicketsUI purchaseTicketsUI;
private ConfirmTicketUI confirmTicketUI;
private PurchaseCompleteUI purchaseCompleteUI;
private AccountInfoUI accountInfoUI;
private ChangePasswordUI changePasswordUI;
private BillingInfoUI billingInfoUI;
private ProgressObserverUI progressObserverUI;
private RateMyMoviesUI rateMyMoviesUI;
private SyncMovieRatingsUI syncMovieRatingsUI;
所组成的。其中每一个View的设计都比较简单。
Ok,现在从头走一编
先启动SmartTicketMIDlet,SmartTicketMIDlet启动model和初始化controller;
在初始化UIController的过程中(init方法),View一一被实例化,并且根据accountInfo的情况分别进入AccountSetupUI或者MainMenuUI;
现在,整个系统的架构渐渐清晰,如下所示:
前两篇主要描述了我学习smart ticket的Model部分的过程,总体感受是,使用了很多的设计模式(Facade,Adapter,Proxy,职责链)。在我自己的代码中,一般没有考虑过这么多模式的使用。
我记得在一篇帖子中,robbin曾将设计模式和围棋的定式做了比较,我虽然不懂得“定式”,原来也翻看过《建筑的永恒之道》这本书,我想,设计模式也就是经过软件开发者长期摸索而推出的解决普遍问题的通用方式吧。
就拿建筑来说,我生活的13朝古都西安城就有很多古代建筑,比较著名的唐朝建筑--大雁塔,明朝建筑--钟楼,明代城墙等等,只要留心就会发现,每个朝代的建筑物其实都有自己的“个性”,例如唐代建筑的屋檐和檐顶的勾角就很有特色,所有唐代的建筑仿佛都在遵循一样的风格;这就好比软件上的设计模式,如果大家遵循一种设计上比较成熟的方式,就能够满足易于扩展、拥抱变化等好处。
总之,别人好的设计经验,是需要我不断去学习的。
在smart ticket中,View和Controller的设计还是必要容易理解的。
UIController类充当了一个大大的控制器。说它是大大的,是因为所有和View控制相关的功能都在这一个类中完成。(随后我应该分析一个有多个Controller的程序)
View是由
java 代码
所组成的。其中每一个View的设计都比较简单。
Ok,现在从头走一编
[2] 再次贡献小弟我的心血(Wap Explorer)
来源: 互联网 发布时间: 2014-02-18
再次贡献我的心血(Wap Explorer)
我的感觉是新手现在都不太敢发言了,也许大牛太多的原因吧
对于JME开发不是很了解,建议LZ对比下同类软件,让不关心这个领域的人心里看起来至少有点底啊
详细地址请看
一个未完成的Wap浏览器
这几天不断的有网友,朋友,公司来询问我关于Wap浏览器,即时信息内容设计,以及低级UI组件设计的问题。为了解答各位网友跟朋友的需求,再次贡献自己的源代码,这些代码直接在eclipse+eclipseMe上可直接运行
里面实现的功能友通过kxml解释wml并生成UI组件显示出来。采用多线程下载数据,
本想采用proxy的方式去读取图片---这部分没做
采用mvc结构分离业务逻辑与UI。
采用command的方式进行操作。
实现大部分实用的UI使用,也可以自己定义UI。
。。。。。。。。。。。。还有很多没实现,就等大家去做了。
再次声名,次相关的源代码可以用于商业用途,但用的时候麻烦通知下我。让我也了解我对j2me做成的贡献有多大。也算是对本人我的尊重。
代码写的比较差。还望大家完善
22 楼
bruce.fine
2007-02-07
我的6030运行会有问题,不过支持楼主的共享精神:)
23 楼
pandonix
2007-02-07
其实,只要想做,没有办不到的事。我之前做过一个类似的项目,把一些教训和楼主分享一下。对于中国移动而言,各地使用的网关是不同的(当然是对cmwap),江苏上海一带,用的是华为的网关。这点,楼主自己架个服务器,然后用手机连一下,从报文头就可以明显看出来。经过华为网关过滤以后,是收不到wml文件的,是经过encoding的wbxml(kxml支持对其的解析)。广东福建一带用的是nokia网关,基本不做什么encoding,直接收到wml文件。
至于重订向问题,如果是华为网关的话,不用去考虑,当然是指302跳转,网关自动处理好。如果是nokia网关的话,需要自己处理。但是有的机型如:Nokia7610等,无法从http头里面获取到重订向的URL。还有,如果开发过wap网站的朋友可以比较清楚,其实很多wap页面不采用302跳转,特别是移动梦网中的wap业务,大部分都是采用wml语法中的onenterforward等标记来处理重订向问题。
另外,我感觉,如果要写一个真正能使用的wap浏览器的话,还有太多的东西需要考虑进去了,个人觉得j2me平台实现的话困难会更多。例如:编码等问题,这又跟网关是相关的。 其实,全国网关不统一是最烦人的。
至于重订向问题,如果是华为网关的话,不用去考虑,当然是指302跳转,网关自动处理好。如果是nokia网关的话,需要自己处理。但是有的机型如:Nokia7610等,无法从http头里面获取到重订向的URL。还有,如果开发过wap网站的朋友可以比较清楚,其实很多wap页面不采用302跳转,特别是移动梦网中的wap业务,大部分都是采用wml语法中的onenterforward等标记来处理重订向问题。
另外,我感觉,如果要写一个真正能使用的wap浏览器的话,还有太多的东西需要考虑进去了,个人觉得j2me平台实现的话困难会更多。例如:编码等问题,这又跟网关是相关的。 其实,全国网关不统一是最烦人的。
24 楼
wuhua
2007-02-07
楼上的是高人啊
难怪我解释那些wml的时候出现错误.
就是这个原因.有些就很正常.
谢谢分享了
难怪我解释那些wml的时候出现错误.
就是这个原因.有些就很正常.
谢谢分享了
25 楼
rakeone
2007-02-07
辛苦了..兄弟
26 楼
心似海
2007-02-07
支持WEP!!手机网络吧,呵呵,听说点,不过我很喜欢,好象用友也在推出。能学到这个东东真好。支持你啊
27 楼
pandonix
2007-02-08
一直想对以前做的wap相关的项目作一个总结,老是苦于项目压力没有时间和精力,很佩服楼主这种共享精神,web2.0的忠实奠基者啊,呵呵:)
28 楼
bruce.fine
2007-02-09
写的很不错的,就WAP浏览器而言,J2ME要解决很多问题,从层上面看可以简单的分为:网络层,UI层,扩展层,楼主的package做的很不错,很清晰。加油!
29 楼
wyymaomi
2007-02-14
写得好的很,比我强
30 楼
kyoleelqh
2007-03-05
THANKS向作者学习
31 楼
realcode
2007-03-13
没有碰过j2me,不过支持共享
32 楼
sen
2007-05-17
我是做游戏的,应用的接触的比较少,学习学习,呵呵
33 楼
gavin.guo
2007-05-19
感谢!不错
34 楼
edua
2007-05-21
正在关注这方面的东西,谢谢楼主。
35 楼
orientalsun
2007-05-21
加了老大的msn
以后多请教啊
以后多请教啊
36 楼
thrytku
2007-05-24
支持中~~~一直关注J2ME
37 楼
sfasdf
2007-07-13
垃圾垃圾
38 楼
xiaotuTiger
2007-08-29
支持楼主!
39 楼
teamgong
2007-09-05
不是啊,楼主,你的贡献精神真的很感谢,你写的东西我也很有兴趣,顶啊!希望继续完善!
40 楼
minimu
2007-09-05
Ivan Li 写道
主要是怕被投成新手贴或隐藏贴,发贴前都会慎重考虑考虑
我的感觉是新手现在都不太敢发言了,也许大牛太多的原因吧
对于JME开发不是很了解,建议LZ对比下同类软件,让不关心这个领域的人心里看起来至少有点底啊
41 楼
dp1234
2007-09-06
楼主 你好 我当下你的程序调试怎么运行不了报错
[3] 可否动态的创建一个类
来源: 互联网 发布时间: 2014-02-18
能否动态的创建一个类
请问能否根据动态获得的参数而动态的创建一个类?
呵呵,当然是可以的,但你的问题也问得太简单了,应该参考一下这个论坛的“提问的艺术”。
“动态创建”,问题是如何理解“动态创建”,比如:
最简单的,是提供一个class的名称(算不算一个动态的参数?),然后“动态创建”new Instance一个类的实例,前提是,你已经在classpath中有了这个这个类的class文件。可以参考
复杂一些的,比如:根据提供的ClassName, field name, method name and parameters' name 使用java.lang.reflect包,创建真正的“动态”类和实例。不写了,这方法太累,有兴趣自己去看java doc了。java在这一块也算比较完善了,但还是比不上.net,.net的反射设计比较清晰、干净。
也不是完全不可以.
你可以读取一个java源文件参数,动态调用javac编译它,然后用反射实例化,调用.
有点类似IDE(eclipse)的用法.
请问能否根据动态获得的参数而动态的创建一个类?
1 楼
LucasLee
2007-05-04
这个对于静态类型的Java应当是不可以的.
2 楼
javavsnet
2007-05-04
可以的,但是很复杂,代价太大了,用asm可以在运行时生成类。说说你的需求,看是否一定要动态创建类。
3 楼
bigpanda
2007-05-04
Java 6里面带编译器,做这个事就容易多了。
4 楼
SteveGY
2007-05-04
shangmw 写道
请问能否根据动态获得的参数而动态的创建一个类?
呵呵,当然是可以的,但你的问题也问得太简单了,应该参考一下这个论坛的“提问的艺术”。
“动态创建”,问题是如何理解“动态创建”,比如:
最简单的,是提供一个class的名称(算不算一个动态的参数?),然后“动态创建”new Instance一个类的实例,前提是,你已经在classpath中有了这个这个类的class文件。可以参考
java.lang.Class.forName("classname").newInstance()
复杂一些的,比如:根据提供的ClassName, field name, method name and parameters' name 使用java.lang.reflect包,创建真正的“动态”类和实例。不写了,这方法太累,有兴趣自己去看java doc了。java在这一块也算比较完善了,但还是比不上.net,.net的反射设计比较清晰、干净。
5 楼
shangmw
2007-05-05
这位楼上说的是在工程里面已经编写了一个类,然后再在程序运行的时候动态的创建。而我的意思是原本工程里面没有这个类,(也就是不能通过java.lang.Class.forName("classname").newInstance()来取得这个类的实例)而是在程序里面现行的创建一个类
仔细的想想,在JAVA代码里面都是用的经过编译的二进制代码,如果这样的话,我上面想的根本行不通,因为没有经过编译。
仔细的想想,在JAVA代码里面都是用的经过编译的二进制代码,如果这样的话,我上面想的根本行不通,因为没有经过编译。
6 楼
LucasLee
2007-05-05
shangmw 写道
这位楼上说的是在工程里面已经编写了一个类,然后再在程序运行的时候动态的创建。而我的意思是原本工程里面没有这个类,(也就是不能通过java.lang.Class.forName("classname").newInstance()来取得这个类的实例)而是在程序里面现行的创建一个类
仔细的想想,在JAVA代码里面都是用的经过编译的二进制代码,如果这样的话,我上面想的根本行不通,因为没有经过编译。
仔细的想想,在JAVA代码里面都是用的经过编译的二进制代码,如果这样的话,我上面想的根本行不通,因为没有经过编译。
也不是完全不可以.
你可以读取一个java源文件参数,动态调用javac编译它,然后用反射实例化,调用.
有点类似IDE(eclipse)的用法.
7 楼
headsome
2007-05-06
楼主的关键词是J2ME
在CLDC 1.0中,是不支持反射的,就是说不能动态创建类
在CLDC 1.1中,支持很少的反射,效率很低。
综上,在J2ME程序中,不要琢磨反射的事情了~
在CLDC 1.0中,是不支持反射的,就是说不能动态创建类
在CLDC 1.1中,支持很少的反射,效率很低。
综上,在J2ME程序中,不要琢磨反射的事情了~
8 楼
Godlikeme
2007-05-06
j2me里面搞这些干啥?有时间还是考虑怎么能多弄几个对象用吧。
最新技术文章: