记得前段时间我就说过,要改一个电话簿的例子,到今天才算完成,真是可谓浩大的工程啊!^_^
其实,这两个月来一直都没弄他,忙别的了,然后就给忘了(这个习惯不好),昨天刚看了一下blog,发现自己还有这么个东西没完成,就赶紧完成他了。
原本是从j2medev上下载了一个电话簿程序,源文件是一个txt文件,结构混乱,不知道作者是用什么写的,改扩展名.java,然后导入eclipse,直接ctrl+shift+F,没效果,无奈1000多行一点一点的回车,终于把结构给分清了,然后格式化,改一些小错误,还不错,能运行了。
大学课程曾学过mvc,不过真正做项目时没太用到过,所以就萌生了这么个念头,改整个一个midlet文件成为真正的mvc架构程序。
主midlet:AddrBookMIDlet.java
UI包:
MainMenuForm.java;//主菜单界面
ListAllForm.java;//记录列表界面
AddTelForm.java;//添加记录界面
SearchForm.java;//搜索记录界面
ShowTelForm.java;//详细记录界面
model包:
AddrData.java;//记录对象
AddrDataVector.java;//记录的Vector对象,保存记录列表
FriendData.java;//记录数据model
controller包:
UIController.java;//控制器类,全部控制都写在这里
EventID.java;//事件ID
结构理清楚了,下面就编码了。
至于代码,我感觉只可意会不能言传,或许是我语言表达能力太差吧,总之我认为重点的就是mvc的最基本思想,分工明确,完成各自任务,也就是理论说讲的使输入、处理和输出分开。
比如我新加一个电话联系人记录,过程是这样的:在主界面选择新建“新增电话记录”,当你点击“确定”的按钮,controller控制器接受到了你的命令,做出一个相应动作
addTelForm = new AddTelForm(this);//实例化了一个对象
setCurrent(addTelForm);//然后将界面换成这个刚刚实例化的对象
那么当上述命令执行完,控制器完成他的任务,然后继续等待。
这个时候呈现在手机界面上就是addTelForm这个视图,在你添加了相应信息,点击“确定”,这个时候控制器又工作了,根据你的要求,要新增,那么控制器从视图上获得数据的对象(这里是getString()),然后把数据发给model,model中有相对应的方法,对数据进行处理,结果或许返回,或许不返回,根据具体项目要求来定,这里不返回。都结束后,控制器再次setCurrent一个界面,显示给使用者。
整体就是这样,视图View只负责显示,控制器用于传递,model负责逻辑处理,三者分工明确,各执其责,整个结构清晰明了。
从昨天到现在大概用了10个左右小时完成了这个小程序,其实本不需要这么长时间,不过在改写过程中,也遇到很多问题,在这次改写过程中,对J2ME的理解又加深了一些。
写篇日志留念。