仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1260|回复: 19
打印 上一主题 下一主题

[学习教程] JAVA网页设计一个别现Java接口及工场形式长处的例子...

[复制链接]
冷月葬花魂 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:43:17 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
但是我同意你的观点,对于大型项目来说,应该是采用框架的一部分,根据功能的不同而改进,欢迎你能再提出些宝贵意见,我会多多学习的。说到jbuilder,我可能是个人感觉,用的时候确实没有vs爽,我最喜欢的IDE是netbeans,谢谢。跟着形式观点的提高,懂得形式和利用形式的程序员愈来愈多,良多人在进修形式的时分,城市有如许一种困惑:“有需要弄得这么庞大吗?”。切实其实,由于教程的例子过于复杂化(如许便利读者进修),大概是作者选例子的时分并没有很好表现所讲形式的长处,良多情形下假如仅就其例子的成绩来讲,用形式是太庞大了。因而才招致如许的曲解:“形式就是把复杂的成绩庞大化吗?”。固然不是,跟着你开辟理论的不休丰厚,你终会发明形式壮大能力,并且形式也并不是贵族化的编程体例,它就是一些经由提炼了的办理成绩的办法技能。

经由过程进修形式,程序员入手下手告辞已往准直线式的代码体例,形式开扩了我们的视野,强化了我们面向对象编程的头脑体例。但是如今又呈现了另外一个广泛的成绩,自觉使用形式。形式是成绩的办理计划,先有成绩才有形式,形式是依靠于所要办理的成绩的而生的。必需懂得形式在良多情形下是以进步代码的庞大度为价值来加强天真性、可复用性。假如在自已的代码中利用某一形式仅只进步了代码的庞大度,而别的方面见效甚微,大概某部分代码基本就不存在天真性及高复用性的需求,那末我们就没有需要为利用形式而保持更直不雅复杂的代码写法。

一流的妙手90%精神存眷成绩的办理计划,由于找到了好的办理计划,再写起代码会很轻松代码也简便流利,看如许的代码是一种享用和进步;二流的生手90%精神存眷代码完成,由于成绩的办理计划并不是最好,完成的代码也会对照庞大;三流菜鸟记流水帐,90%精神在敲键盘,经常做了泰半才发明行欠亨,回过火来再用90%的工夫敲键盘,基本不会用就任何形式,写出来的代码的只要他自已才干看懂。做出来的软件也是分崩离析,做一丁点修改都要年夜费周折,并且你还不晓得修改后会发生甚么成绩,年夜有住危房里的感到。

在这里仍是举一个滥用形式的例子吧。我曾介入过一个年夜团体公司OA体系的第二期开辟,开辟相沿原有代码架构并增添新的功效模块。文档很少我读原代码时就被它程序里的代码转来转往弄得头年夜如斗,最初读懂了:原代码架构整体接纳工场形式,并且是最庞大的笼统工场形式。它把一切模块类都经由过程工场天生还工场套工场,而且每个模块类都有一个接口,每一个接口也只要一个模块实际类,由于触及权限把持还用了代办署理(proxy)形式。 读懂代码后我入手下手嵌进代码,发明每新增一个类,都要到六个Java文件中往增添响应代码,而在类中每增添一个办法,也要到它的接口等四个Java文件中往增添响应代码。天呀!!!记妥当时我的小姆指常会不听使唤,就是由于频仍的利用Ctrl+C、Ctrl+V,小姆指按着Ctrl键给累的。全部项目组苦不胜言,真烦透了。项目停止后我回忆发明:代办署理形式用得还对(如今针对权限这类横向把持有AOP编程这类新的办理举措了)但工场形式在这里基本就是多此一举,不但没有办理甚么成绩,反而增添代码庞大度和耦合性,下降了开辟效力连保护难度都进步了。并且那种每一个类复杂的加一个接口的体例,更是没有事理,这让我很想说周星驰说过的一句话:“球~~~不是这么踢~~~~的,接口~~~不是这么用~~~的”。言回正传,我们先来看如许一个罕见成绩:某体系必要撑持多品种型的数据库。用过Oracle、MSSQL等数据库的人都晓得,它们的SQL编写体例都各有些分歧。好比说Oracle的独一标识主动+1字段用的是序列,MSSQL改一下字段属性就成了,另有各类各自独有的SQL用法。为了撑持多半据库,岂非我们要开辟多套体系?固然NO。请看上面的办理计划。

即然数据库存在多种,我们能够将体系中一切对数据库的操纵笼统出来,写成一个个办法组合到一个类中,有几种数据库我们就写几个如许的类。详细计划类图以下:




扼要申明:
OracleDataOperate、SqlserverDataOperate、MysqlDataOperate,分离代表Oracle、Sqlserver、Mysql这三种数据库的操纵类。承继自AbstractDataOperate
AbstractDataOperate是一个笼统类,包括了那些分歧品种数据库都是一样代码的操纵办法。承继自DataOperate
DataOperate是下面说的数据操纵类的一致接口,只要两个办法:获得一笔记录、拔出一笔记录。
DataOperateFactory是一个工场办法,一致用它的办法来失掉数据库操纵类的实例。
SampleClass是我们体系的某个功效模块的类。
People是一个实体类,代表一笔记录。三个字段 oid独一标识符、name姓名、date诞辰。

具体申明:
1、一切体系功效模块类只认DataOperat这个接口还不用管详细的完成类是OracleDataOperate还SqlserverDataOperate。DataOperate源代码以下:
publicinterfaceDataOperate{
//依据纪录的独一标识掏出一笔记录
PeoplegetPeople(Stringoid);
//拔出一笔记录
booleaninsertPeople(Peoplepeople);
}

2、AbstractDataOperate、OracleDataOperate、SqlserverDataOperate、MysqlDataOperate都是承继DataOperate接口的,没甚么好说的,省略。

3、DataOperateFactory。我们看看工场办法怎样写的。
publicclassDataOperateFactory{
publicstaticfinalintORACLE=0;//界说三个暗示数据库范例的常量
publicstaticfinalintMYSQL=1;
publicstaticfinalintSQLSERVER=2;

privatestaticDataOperatedb;
privatestaticintdataType=MYSQL;
/**
*依据数据库范例(dataType)获得一个数据库操纵类的实例,
*这里对DataOperate利用了单例形式,由于OracelDataOperate等都是无形态的工具类,
*以是全部体系只保存一个实例就好了。
*
*@return前往的是接口,客户端不用体贴详细是用谁人完成类
*/
publicstaticDataOperategetInstance(){
if(db==null){
if(dataType==ORACLE)//依据dateType前往响应的完成类
returnnewOracelDataOperate();
if(dataType==MYSQL)
returnnewMysqlDataOperate();
if(dataType==SQLSERVER)
returnnewSqlserverDataOperate();
}
returndb;
}
}

4、接上去就看看利用端是怎样挪用工场办法和利用数据操纵类的。
/**
*体系某个功效类
*/
publicclassSampleClass{
privateDataOperatedb;//声明一个数据库操纵类,注重这里用的是接口噢
/**某办法*/
publicvoidsampleMethod(){
db=DataOperateFactory.getInstance();//失掉单一实例
Peoplep=db.getPeople("123");//获得一笔记录
db.insertPeople(p);//再插归去
}
}

  我们发明SampleClass中基本没有呈现OracelDataOperate、MysqlDataOperate等的影子,这就是接口的能力。客户端不用针对OracelDataOperate等写分歧的代码,它只体贴DataOperate便可,详细要取谁人类的逻辑就由DataOperateFactory卖力了。

总结:
从例子中我们能够看到甚么是面向接口的编程体例。SampleClass利用数据操纵类能够不用体贴详细是谁人类,只需是切合接口的都行
要实例?只须挪用DataOperateFactory.getInstance()便可,别的的交于DataOperateFactory这个工场来做吧,利用端甚么都不必体贴。
我们要撑持新的数据库范例,只必要象OracelDataOperate那样,再写一个承继AbstractDataOperate的类便可,好比SysbaseDataOperate。然后到DataOperateFactory中到场响应代码便可。
假如我们想要可设置性更高,能够用privatestaticintdataType=MYSQL;中的值设置到一个文本文件中。
  关于开辟撑持多种数据库的体系,激烈倡议利用hibernate,我如今做的体系就是用hibernate的,开辟时用Mysql,到要给客户时将数据库换了DB2,程序不必做任何修改,真实的无逢移植。不外如许,本文所提到的办法就没甚么用了.


从一个编程语言的普及程度来将,一个好的IDE是至关中要的,而现在的java的IDE虽然已经很好了,但是和.net比起来还是稍微差一些的,这是个客观事实。java要想普及的更好。DE是必须加以改进的。
分手快乐 该用户已被删除
沙发
发表于 2015-1-21 13:18:26 | 只看该作者
你就该学一学Servlet了。Servlet就是服务器端小程序,他负责生成发送给客户端的HTML文件。JSP在执行时,也是先转换成Servlet再运行的。虽说JSP理论上可以完全取代Servlet,这也是SUN推出JSP的本意,可是Servlet用来控制流程跳转还是挺方便的,也令程序更清晰。接下来你应该学习一下Javabean了,可能你早就看不管JSP在HTML中嵌Java代码的混乱方式了,这种方式跟ASP又有什么区别呢?
冷月葬花魂 该用户已被删除
板凳
 楼主| 发表于 2015-1-27 09:23:58 | 只看该作者
你现在最缺的是实际的工作经验,而不是书本上那些凭空想出来的程序。
变相怪杰 该用户已被删除
地板
发表于 2015-1-30 19:41:51 | 只看该作者
如果要向java web方向发展也要吧看看《Java web从入门到精通》学完再到《Struts2.0入门到精通》这样你差不多就把代码给学完了。有兴趣可以看一些设计模块和框架的包等等。
灵魂腐蚀 该用户已被删除
5#
发表于 2015-2-1 12:09:47 | 只看该作者
Java自面世后就非常流行,发展迅速,对C++语言形成了有力冲击。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于个人PC、数据中心、游戏控制台
柔情似水 该用户已被删除
6#
发表于 2015-2-7 04:38:10 | 只看该作者
Sun公司看见Oak在互联网上应用的前景,于是改造了Oak,于1995年5月以Java的名称正式发布。Java伴随着互联网的迅猛发展而发展,逐渐成为重要的网络编程语言。
谁可相欹 该用户已被删除
7#
发表于 2015-2-7 12:14:52 | 只看该作者
一直感觉JAVA很大,很杂,找不到学习方向,前两天在网上找到了这篇文章,感觉不错,给没有方向的我指了一个方向,先不管对不对,做下来再说。
海妖 该用户已被删除
8#
发表于 2015-2-9 02:55:46 | 只看该作者
我大二,Java也只学了一年,觉得还是看thinking in java好,有能力的话看英文原版(中文版翻的不怎么好),还能提高英文文档阅读能力。
admin 该用户已被删除
9#
发表于 2015-2-9 21:17:52 | 只看该作者
你就该学一学Servlet了。Servlet就是服务器端小程序,他负责生成发送给客户端的HTML文件。JSP在执行时,也是先转换成Servlet再运行的。虽说JSP理论上可以完全取代Servlet,这也是SUN推出JSP的本意,可是Servlet用来控制流程跳转还是挺方便的,也令程序更清晰。接下来你应该学习一下Javabean了,可能你早就看不管JSP在HTML中嵌Java代码的混乱方式了,这种方式跟ASP又有什么区别呢?
小女巫 该用户已被删除
10#
发表于 2015-2-27 21:40:32 | 只看该作者
Java自面世后就非常流行,发展迅速,对C++语言形成了有力冲击。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于个人PC、数据中心、游戏控制台
再见西城 该用户已被删除
11#
发表于 2015-3-9 14:29:58 | 只看该作者
是一种为 Internet发展的计算机语言
愤怒的大鸟 该用户已被删除
12#
发表于 2015-3-15 11:35:49 | 只看该作者
有时间再研究一下MVC结构(把Model-View-Control分离开的设计思想)
精灵巫婆 该用户已被删除
13#
发表于 2015-3-17 21:08:30 | 只看该作者
那么我书也看了,程序也做了,别人问我的问题我都能解决了,是不是就成为高手了呢?当然没那么简单,这只是万里长征走完了第一步。不信?那你出去接一个项目,你知道怎么下手吗,你知道怎么设计吗,你知道怎么组织人员进行开发吗?你现在脑子里除了一些散乱的代码之外,可能再没有别的东西了吧!
兰色精灵 该用户已被删除
14#
发表于 2015-3-18 19:19:05 | 只看该作者
多重继承(以接口取代)等特性,增加了垃圾回收器功能用于回收不再被引用的对象所占据的内存空间,使得程序员不用再为内存管理而担忧。在 Java 1.5 版本中,Java 又引入了泛型编程(Generic Programming)、类型安全的枚举、不定长参数和自动装/拆箱等语言特性。
只想知道 该用户已被删除
15#
发表于 2015-3-26 12:19:19 | 只看该作者
Java是一种计算机编程语言,拥有跨平台、面向对java
老尸 该用户已被删除
16#
发表于 2015-3-30 10:26:07 | 只看该作者
[url]http://www.jdon.com/[/url]去下载,或到同济技术论坛的服务器[url]ftp://nro.shtdu.edu.cn[/url]去下,安装上有什么问题,可以到论坛上去提问。
活着的死人 该用户已被删除
17#
发表于 2015-4-5 07:51:56 | 只看该作者
不过,每次的执行编译后的字节码需要消耗一定的时间,这同时也在一定程度上降低了 Java 程序的运行效率。
因胸联盟 该用户已被删除
18#
发表于 2015-4-5 18:46:29 | 只看该作者
所以现在应用最广泛又最好学的就是J2EE了。 J2EE又包括许多组件,如Jsp,Servlet,JavaBean,EJB,JDBC,JavaMail等。要学习起来可不是一两天的事。那么又该如何学习J2EE呢?当然Java语法得先看一看的,I/O包,Util包,Lang包你都熟悉了吗?然后再从JSP学起。
第二个灵魂 该用户已被删除
19#
发表于 2015-4-9 09:26:49 | 只看该作者
你一定会高兴地说,哈哈,原来成为Java高手就这么简单啊!记得Tomjava也曾碰到过一个项目经理,号称Java很简单,只要三个月就可以学会。
小妖女 该用户已被删除
20#
发表于 2015-5-9 11:03:51 | 只看该作者
你快去找一份Java的编程工作来做吧(如果是在校学生可以去做兼职啊),在实践中提高自己,那才是最快的。不过你得祈祷在公司里碰到一个高手,而且他 还愿意不厌其烦地教你,这样好象有点难哦!还有一个办法就是读开放源码的程序了。我们知道开放源码大都出自高手,他们设计合理,考虑周到,再加上有广大的程序员参与,代码的价值自然是字字珠叽,铿锵有力(对不起,偶最近《金装四大才子》看多了)。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-23 03:02

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表