莫相离 发表于 2015-1-18 11:35:43

JAVA网站制作之MVC形式在j2me项目中的使用(二)

你对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会更好。以上都是俺个人看法,欢迎大家一起交流.

第二个灵魂 发表于 2015-1-21 10:41:32

是一种简化的C++语言 是一种安全的语言,具有阻绝计算机病毒传输的功能

简单生活 发表于 2015-1-25 23:31:19

那么我书也看了,程序也做了,别人问我的问题我都能解决了,是不是就成为高手了呢?当然没那么简单,这只是万里长征走完了第一步。不信?那你出去接一个项目,你知道怎么下手吗,你知道怎么设计吗,你知道怎么组织人员进行开发吗?你现在脑子里除了一些散乱的代码之外,可能再没有别的东西了吧!

小魔女 发表于 2015-2-4 11:36:27

学Java必读的两个开源程序就是Jive和Pet Store.。 Jive是国外一个非常著名的BBS程序,完全开放源码。论坛的设计采用了很多先进的技术,如Cache、用户认证、Filter、XML等,而且论坛完全屏蔽了对数据库的访问,可以很轻易的在不同数据库中移植。论坛还有方便的安装和管理程序,这是我们平时编程时容易忽略的一部份(中国程序员一般只注重编程的技术含量,却完全不考虑用户的感受,这就是我们与国外软件的差距所在)。

海妖 发表于 2015-2-9 22:23:48

在全球云计算和移动互联网的产业环境下,Java更具备了显著优势和广阔前景。

深爱那片海 发表于 2015-2-11 19:16:46

吧,现在很流行的Structs就是它的一种实现方式,不过Structs用起来实在是很繁,我们只要学习其精髓即可,我们完全可以设计自己的MVC结构。然后你再研究一下软件Refactoring (重构)和极限XP编程,相信你又会上一个台阶。 做完这些,你不如整理一下你的Java代码,把那些经典的程序和常见的应用整理出来,再精心打造一番,提高其重用性和可扩展性。你再找几个志同道合的朋友成立一个工作室吧

莫相离 发表于 2015-2-26 03:10:10

多重继承(以接口取代)等特性,增加了垃圾回收器功能用于回收不再被引用的对象所占据的内存空间,使得程序员不用再为内存管理而担忧。在 Java 1.5 版本中,Java 又引入了泛型编程(Generic Programming)、类型安全的枚举、不定长参数和自动装/拆箱等语言特性。

愤怒的大鸟 发表于 2015-3-8 11:34:39

科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。

admin 发表于 2015-3-15 22:18:56

是一种使网页(Web Page)产生生动活泼画面的语言

若天明 发表于 2015-3-22 17:37:07

Sun公司看见Oak在互联网上应用的前景,于是改造了Oak,于1995年5月以Java的名称正式发布。Java伴随着互联网的迅猛发展而发展,逐渐成为重要的网络编程语言。

精灵巫婆 发表于 2015-3-25 00:01:19

你快去找一份Java的编程工作来做吧(如果是在校学生可以去做兼职啊),在实践中提高自己,那才是最快的。不过你得祈祷在公司里碰到一个高手,而且他 还愿意不厌其烦地教你,这样好象有点难哦!还有一个办法就是读开放源码的程序了。我们知道开放源码大都出自高手,他们设计合理,考虑周到,再加上有广大的程序员参与,代码的价值自然是字字珠叽,铿锵有力(对不起,偶最近《金装四大才子》看多了)。

仓酷云 发表于 2015-3-25 08:19:54

设计模式是高级程序员真正掌握面向对象核心思想的必修课。设计模式并不是一种具体"技术",它讲述的是思想,它不仅仅展示了接口或抽象类在实际案例中的灵活应用和智慧

冷月葬花魂 发表于 2015-3-27 00:46:50

Java 不同于一般的编译执行计算机语言和解释执行计算机语言。它首先将源代码编译成二进制字节码(bytecode),然后依赖各种不同平台上的虚拟机来解释执行字节码。从而实现了“一次编译、到处执行”的跨平台特性。

飘灵儿 发表于 2015-3-27 11:11:08

当然你也可以参加一些开源项目,一方面可以提高自己,另一方面也是为中国软件事业做贡献嘛!开发者在互联网上用CVS合作开发,用QQ,MSN,E-mail讨论联系,天南海北的程序员分散在各地却同时开发同一个软件,是不是很有意思呢?

飘飘悠悠 发表于 2015-3-28 13:25:22

应用在电视机、电话、闹钟、烤面包机等家用电器的控制和通信。由于这些智能化家电的市场需求没有预期的高,Sun公司放弃了该项计划。随着1990年代互联网的发展

兰色精灵 发表于 2015-3-31 18:00:00

科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。

灵魂腐蚀 发表于 2015-4-16 12:09:30

关于设计模式的资料,还是向大家推荐banq的网站 http://www.jdon.com/,他把GOF的23种模式以通俗易懂的方式诠释出来,纯Java描述,真是经典中的经典。

金色的骷髅 发表于 2015-4-20 02:20:02

应用在电视机、电话、闹钟、烤面包机等家用电器的控制和通信。由于这些智能化家电的市场需求没有预期的高,Sun公司放弃了该项计划。随着1990年代互联网的发展

小女巫 发表于 2015-4-26 12:37:49

你一定会高兴地说,哈哈,原来成为Java高手就这么简单啊!记得Tomjava也曾碰到过一个项目经理,号称Java很简单,只要三个月就可以学会。
页: [1]
查看完整版本: JAVA网站制作之MVC形式在j2me项目中的使用(二)