|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
你对java乐观有点盲目。java的关键就是在服务器上表现优异,而且它提供了整个开发所需要的工具。应该是说,看哪天。net有没有机会赶上java。项目MVC形式在j2me项目中的使用(二)
FavoYangEmail:favoyang@yahoo.com接待交换
Keywords:MVC案例形式
内容提纲:
假如想实验一下本人对一个常识究竟有几分的把握,最好的办法就是理论她。分离一个名为“NOTE”的项目(记事本),使用MVC形式举行构建,一同体味一下MVC的壮大与天真。请注重的是,本文中关于不再利用MVC如许的术语,而是利用界限类、把持类、实体类、性命周期类如许的称号。关于MVC的在j2me上的各种变更请看本文的(一),特别看看我的习气做法,不然交换上有坚苦。
本文器重的是整体计划,细节上没有过量的谈。
Iwantagoodsleep.
版权声明:
本文同时宣布在www.j2medev.com和我的Blog(blog.csdn.net/alikeboy)上,假如必要转载,有三个路子:1)接洽我并经我批准;2)和www.j2medev.com有转载文章互助协定的3)经由过程Rss聚合我的Blog。别的网上转载必要全文转发(包含文章的头部的声明),不要断章取义。
注释:
Note项目形貌
手机是一个真正随身照顾的数字终端,我们除使用手机打德律风、发信息外,常常让他匡助我们纪录笔墨性的信息。PDA有较年夜的屏幕和手写输出的功效,而手机上的记事功效无限,纪录的内容很复杂。能够说使用手机纪录信息是一种被视为理所应该的功效,也作育了一个一系列的使用――将手机作为随时随地的信息搜集器。不难假想此类使用会用必定的市场,我们明天选择的Note记事本项目,恰是此类使用的单机版的本相。
Note是良多手机的内建使用程序,一样平常叫做记事本或便签,申明这是一个十分经常使用的服务。大概伴侣们大概以为开辟一个已有的程序没有应战性。是的,在开辟上最隐讳的就是重作车轮,但关于教授教养则可两说着。究竟一个复杂的原型程序不会让我们堕入太多的细节,我的大旨是向人人先容MVC形式的使用办法。
Note为手机用户供应纪录一些冗长信息的功效,用户能够增加纪录,翻开扫瞄纪录,并能够随时修正已保留在手机上的纪录,固然也能够删除它们。就好象Windows下的记事本一样,只不外多了办理的功效。
用例剖析
起首假想一下谁在利用这个程序:手机用户。好,我们今后就称这个介入者为用户(user)。
然后假想一下,用户都使用我们的NOTE(中文我们叫做纪录好了)干些甚么呢?很明显,用户能够增加新的纪录,扫瞄他增加的纪录,修正他所增加的纪录,而且他还能够删除纪录。一笔记录应当复杂的包含用户对纪录起的名字,纪录的创立或修正工夫,和最主要的纪录的内容。
一样平常的情形开辟职员是很恶感这类笔墨性的形貌的,常常是由于开辟职员习气于看待硬邦邦的PC机,而不肯意往面临客户,搜集这类需求。实在笔墨性的工具,既是一个对体系的概述,又是我们发明开辟要素的泥土。试想假如你的软件要公布了,你却没法构造起言语让用户得当的了解软件的功效与利用对象,是何等的让人懊恼。
简练用户的需求(实际上是我的教授教养需求哈哈)。很明显增加纪录与修正纪录同属于对纪录举行编纂操纵,就叫做编纂纪录用例(NoteEdit)好了。扫瞄纪录也是一个很分明的用例,就叫做扫瞄用例(Notepad)。删除是对纪录举行的一种办理,叫做办理纪录用例(NoteManager)。到此,我们已发明并简练了三个次要用例,还不错,体系正一步步变的明晰。在这里提示人人,这个阶段是站在客户的概念(这里是用户的概念)想成绩的,你的事情是发明并体系化客户的设法,不用站在开辟者的角度思索任何细节。
So,let‘go。
编纂纪录用例(NoteEdit)
事务流1:
1)显现用户Note的内容
2)用户编纂内容
3)用户保持修正,note内容稳定,一般加入
事务流2:
1)显现用户Note的内容
2)用户编纂内容
3)用户save,退回主菜单
事务流3:
1)显现用户Note的内容
2)用户编纂内容
3)用户saveAs,提醒让用户输出新的文件名
4)Save,退回主菜单
扫瞄用例(Notepad)
事务流1:
1)显现用户的Note的题目、创立工夫、内容
2)用户选择加入,前往主菜单
事务流2:
1)显现用户的Note的题目、创立工夫、内容
2)用户显现编纂,转向编纂用例
办理纪录用例(NoteManager)
事务流1:
1)显现用户的Note列表
2)用户翻开选择的Note,转向扫瞄用例
事务流2:
1)显现用户的Note列表
2)用户编纂选择的Note,转向编纂用例
事务流3:
1)显现用户的Note列表
2)用户新建一个Note,转向编纂用例
事务流4:
1)显现用户的Note列表
2)用户删除选择的Note
3)呈现确认提醒
4)用户确认,删除Note
5)更新显现,回到Note列表
三个用例的事务流一经被剖析出来了,很明显应当在第一次迭代全体完成。
寻觅类(oo剖析)
起首是实体类(Entity),只必要处置件流中提取名字就能够减少局限。
Note,明显是个对象。
内容(content)、工夫(datetime)、题目(title),恩,应当是Note的元素。
Note的办法包含对域成员的操纵set/get。由于要保留,以是必要序列化反序列化办法。
一样平常实体类都是由一个对应的性命周期类(lifecycle)用于他的发生、存储、灭亡等等操纵,一样平常把如许的操纵自力出来年夜年夜有益用实体类的重用。不外此阶段还用不着剖析他,一会儿画按次图时,天然就会发明它。
习气上为了高效的画按次图,界限类和把持类的办法都需逐一列出。不外我们省了,人人只晓得每一个用例都对应着一个界限类就行了。
计划理论
我举三个用例中办理纪录用例(NoteManager)的一部分和扫瞄用例(Notepad)的一部分来先容具体的计划历程。在这里,我们试图从一个客户的角度转化到一个开辟者角度。要面临良多的应战,大概包含一部分细节。应当进修从分别的角度思索全部体系。MVC的精髓就在这里。
纪录用例(NoteManager)事务流1:
NoteManagerUI其实不晓得Note列表的详细构造情势,它经由过程事后约定好的接口getNoteTitleList向把持类NoteManagerWorkflow所要数据,把持类前往一个String[]数组。
一样,NoteManagerWorkflow必要向性命周期类NoteLocator所要数据,不外NoteManagerWorkflow晓得数据的细节。为了可以辨认数据,除前往纪录的Title这一信息外,还要同时前往一个独一辨认的ID作为全部体系内辨认Note的办法。以是NoteManagerWorkflow就有了两个域一个是TitleList、一个是IdList。
这里有几个细节:
1)NoteManagerUI、NoteManagerWorkflow怎样通讯,这不成成绩,我们有来由信任他们是严密相干的。
2)NoteManagerWorkflow怎样找到NoteLocator,一样平常情形下,NoteLoator都是单件Singlton。
3)当NoteManagerUI的showNote(index),挪用的时分,他会挪用NoteManager的showNoteDispose(index),而showNoteDispose会依据外部的完成,将这一Index转化为id用于辨认Note
扫瞄用例(Notepad)事务流1:
NotepadUI向把持类所要题目,把持类有域note、和noteid,可是把持类经由过程getNode,这里很分明的可使用惰性初始化手艺,向性命周期类所要Note。获得纪录对象的援用后,你能够便利的像实体类哀求数据了。
履历分享
固然了,打好骨架后你就能够入手下手时coding了,绘图的优点是强制你在计划阶段做好各个部件之间的接口计划。这能够无效地削减你返工的概率,可是常常我们在计划阶段过量的思索了细节,好比NoteLocator是怎样和Rms交换的等等。这都是很欠好的习气,可是不太简单更正。由于不管是黉舍里,仍是陪训等等都是练习,重复的练习我们对coding的敏感。我们太依附于从代码的角度思索成绩了,这拦阻了我们从年夜局思索成绩,发明更通用的形式。
假如要入手下手coding了,也不要一入手下手就周全放开,一样平常实体类具有很强的自力性。能够自力开辟,而开辟别的类的时分能够从界限类入手下手,假如想一边开辟一边测试一下,年夜可把把持类、性命周期类的办法临时用fadedata(伪支持数据),这都是年夜年夜下降庞大性的好举措。
有前提的话请举行单位测试,否则测试效力其实是低。(Ps,有人写篇j2me下利用单位测试的文章好吗,我好想让测试主动化)
惰性初始化是我利用的最为频仍的手艺,我以为它能够年夜年夜下降代码凌乱的水平。
全部体系的UML
有人说看不懂UML,但假如给我这么年夜的代码,我一定看不懂。UML吗,有大概看懂:)
屏幕快照
入手下手后的画面:(办理用例)
新建后的画面:(编纂用例)
按下save,输出title名字
更新显现:
选择你喜好的扫瞄,好比题目是easy的纪录:(扫瞄用例)
屏幕导航:
代码各种
有伴侣不肯意公然本人的代码,可是关于java来讲,反编译太简单了。你没有甚么奥密可言。相对计划来讲,代码是个很细碎的工具。假如有人乐意为你修正代码,配合完美的话,那是打着灯笼也找不到的呀,我用eclipse开辟,就是在利用开放源码的结晶呀。固然这是对文章的附加代码而言。真实的项目假如开源必定要在GPL下举行。谁也不想再呈现divx那样的事了。转载的伴侣,再说一遍收费不仅即是notcopyright。
csdn的伴侣,由于我不晓得怎样上传出了图象外的附件,要code作参考入手下手往www.j2medev.com吧。
Java到底会发战成什么样,让我们拭目以待吧,我始终坚信着java会更好。以上都是俺个人看法,欢迎大家一起交流. |
|