仓酷云

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

[学习教程] JAVA编程:Java中可复用事务处置的计划与完成代码...

[复制链接]
再现理想 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:54:45 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
最初被命名为Oak,目标设定在家用电器等小型系统的编程语言,来解决诸如电视机、电话、闹钟、烤面包机等家用电器的控制和通讯问题。计划以下是可复用事务处置一文的原代码。今朝,面向对象是软件体系建模的支流手艺,利用面向对象手艺建模的次要目标之一是可复用性。为了更好地办理软件复用性和扩大性成绩,计划形式失掉了愈来愈多的存眷与使用。分离command计划形式和Java言语的反射手艺,本文计划完成了一个可复用的事务处置框架。在面向对象的体系计划中,有些方面的可复用性常常被疏忽了,用户界面(UserInterface,下文简称UI)及其事务处置就是个中之一。一个完全的UI计划应当包含两部分:UI及其响应的事务处置机制,没有事务处置机制的UI是没有效的,关于事务处置,也应当思索可复用计划。固然看上往有些奇异,可是这类计划是有有用代价的DD进步了代码的可复用性、强健性和可保护性。command计划形式的次要计划头脑是把对某一对象的哀求封装为一个对象,从而把收回命令的义务和实行义务的义务分隔,委派给分歧的对象,哀求的一方不用晓得吸收哀求一方的接口。这类引进第三方类的做法是计划形式所习用的,引进的第三方类解耦了紧耦合对象。command计划形式中,第三方类解耦了挪用操纵的对象与晓得怎样完成该操纵的对象,进步了软件的可复用性。JDK1.1及其今后的版本,引进了反射(reflection)手艺。反射是Java中十分凸起的静态特性,使用它能够加载一个运转时才得出名字的class,猎取其完全布局,这统统是经由过程反射API完成的。//UIDemo1
importjava.awt.*;
importjava.awt.event.*;
importjavax.swing.*;publicclassUIDemo1implementsActionListener{
privateJFrameframe;
privateJButtonbutton;
privateJTextAreaarea;
privateintindex=-1;
privateString[]params;privateUIDemo1(Stringargs[]){
params=args;
area=newJTextArea(5,25);
button=newJButton("Clickhere!");
button.addActionListener(this);frame=newJFrame(getClass().getName());
frame.addWindowListener(newReusableWindowAdapter());
Containercont=frame.getContentPane();
JScrollPanescrollPane=newJScrollPane(area);
cont.add(scrollPane,BorderLayout.NORTH);
cont.add(button,BorderLayout.SOUTH);
frame.pack();
frame.setVisible(true);
}publicvoidactionPerformed(ActionEventae){
//provideequalitychecktoseeifsourcewasthe
//buttondefinedabove..usefulonlyifweregister
//thisActionListenerwithmultiplesources
if(ae.getSource().equals(button)){
index=++index%params.length;
area.setText(params[index]);
}
}publicstaticvoidmain(Stringargs[]){
if(args.length>1){
UIDemo1one=newUIDemo1(args);
}else{
usage();
}
}
privatestaticvoidusage(){
System.err.println("Youmayexcutethisprogramasbelow:");
System.err.println("javaUIDemo1params1params2...");
System.exit(-1);
}
}//UIDemo2
importjava.awt.*;
importjava.awt.event.*;
importjavax.swing.*;publicclassUIDemo2{
privateJFrameframe;
privateJButtonbutton;
privateJTextAreaarea;
privateintindex=-1;
privateString[]params;privateUIDemo2(Stringargs[]){
params=args;
area=newJTextArea(5,25);
button=newJButton("ClickHere!");
button.addActionListener(newSemiReusableActionListener(this));frame=newJFrame(getClass().getName());
frame.addWindowListener(newReusableWindowAdapter());
Containercont=frame.getContentPane();
JScrollPanescrollPane=newJScrollPane(area);
cont.add(scrollPane,BorderLayout.NORTH);
cont.add(button,BorderLayout.SOUTH);
frame.pack();
frame.setVisible(true);
}
voidsetMessage(Objectsource){
if(source.equals(button)){
index=++index%params.length;
area.setText(params[index]);
}
}publicstaticvoidmain(Stringargs[]){
if(args.length>1){
UIDemo2two=newUIDemo2(args);
}else{
usage();
}
}
privatestaticvoidusage(){
System.err.println("Youmayexcutethisprogramasbelow:");
System.err.println("javaUIDemo2params1params2...");
System.exit(-1);
}
}//SemiReusableActionListenerimportjava.awt.event.*;publicclassSemiReusableActionListenerimplementsActionListener{
privateUIDemo2demo2;
SemiReusableActionListener(UIDemo2uiDemo){
demo2=uiDemo;
}
publicvoidactionPerformed(ActionEventae){
demo2.setMessage(ae.getSource());
}
}//UIDemo3
importjava.awt.*;
importjava.awt.event.*;
importjavax.swing.*;
importjava.lang.reflect.*;publicclassUIDemo3{
privateJFrameframe;
privateJButtonbutton1;
privateJTextAreaarea;
privateintindex=-1;
privateString[]params;
privateUIDemo3(Stringargs[]){
params=args;
area=newJTextArea(5,25);
button1=newJButton("Clickhere!");
//setuprequiredinformationtouseGenericActionListener
StringmethodName="setMessage";
Class[]paramTypes={java.lang.Object.class};
Object[]methodArgs={button1};
Classclazz=this.getClass();
try{
Methodmethod=clazz.getMethod(methodName,paramTypes);button1.addActionListener(new
ReusableActionListener(method,this,methodArgs));
}
catch(Exceptione){
System.out.println("Couldnotfindthemethod:"+methodName+"
NowExiting...");
System.exit(-1);
}frame=newJFrame(getClass().getName());
frame.addWindowListener(newReusableWindowAdapter());
Containercont=frame.getContentPane();
JScrollPanescrollPane=newJScrollPane(area);
cont.add(scrollPane,BorderLayout.NORTH);
cont.add(button1,BorderLayout.SOUTH);
frame.pack();
frame.setVisible(true);
}
publicvoidsetMessage(Objectsource){
if(source.equals(button1)){
index=++index%params.length;
area.setText(params[index]);
}
}
publicstaticvoidmain(Stringargs[]){
if(args.length>1){
UIDemo3three=newUIDemo3(args);
}else{
usage();
}
}
privatestaticvoidusage(){
System.err.println("Youmayexcutethisprogramasbelow:");
System.err.println("javaUIDemo3params1params2...");
System.exit(-1);
}
}
//ReusableWindowAdapterimportjava.awt.*;
importjava.awt.event.*;publicclassReusableWindowAdapterextendsWindowAdapter{
publicvoidwindowClosing(WindowEventwe){
Objectsource=we.getSource();
if(sourceinstanceofFrame){
((Frame)source).setVisible(false);
((Frame)source).dispose();
System.exit(0);
}
}
}

从一个编程语言的普及程度来将,一个好的IDE是至关中要的,而现在的java的IDE虽然已经很好了,但是和.net比起来还是稍微差一些的,这是个客观事实。java要想普及的更好。DE是必须加以改进的。
金色的骷髅 该用户已被删除
沙发
发表于 2015-1-21 07:10:21 | 只看该作者
我大二,Java也只学了一年,觉得还是看thinking in java好,有能力的话看英文原版(中文版翻的不怎么好),还能提高英文文档阅读能力。
蒙在股里 该用户已被删除
板凳
发表于 2015-1-26 20:46:47 | 只看该作者
设计模式是高级程序员真正掌握面向对象核心思想的必修课。设计模式并不是一种具体"技术",它讲述的是思想,它不仅仅展示了接口或抽象类在实际案例中的灵活应用和智慧
不帅 该用户已被删除
地板
发表于 2015-2-4 20:10:41 | 只看该作者
是一种为 Internet发展的计算机语言
乐观 该用户已被删除
5#
发表于 2015-2-10 05:58:27 | 只看该作者
自从Sun推出Java以来,就力图使之无所不包,所以Java发展到现在,按应用来分主要分为三大块:J2SE,J2ME和J2EE,这也就是Sun ONE(Open Net Environment)体系。J2SE就是Java2的标准版,主要用于桌面应用软件的编程;J2ME主要应用于嵌入是系统开发,如手机和PDA的编程;J2EE是Java2的企业版,主要用于分布式的网络程序的开发,如电子商务网站和ERP系统。
活着的死人 该用户已被删除
6#
发表于 2015-2-28 22:19:07 | 只看该作者
Java 不同于一般的编译执行计算机语言和解释执行计算机语言。它首先将源代码编译成二进制字节码(bytecode),然后依赖各种不同平台上的虚拟机来解释执行字节码。从而实现了“一次编译、到处执行”的跨平台特性。
小魔女 该用户已被删除
7#
发表于 2015-3-2 01:32:57 | 只看该作者
一般学编程语言都是从C语开始学的,我也不例外,但还是可能不学过程语言而直接学面向对象语言的,你是刚接触语言,还是从C开始学比较好,基础会很深点,如果你直接学习JAVA也能上手,一般大家在学语言的时候都记一些语言的关键词,常有的包和接口等。再去做逻辑代码的编写,以后的学习过程都是从逻辑代码编写中提升的,所以这方面都是经验积累的。你要开始学习就从
海妖 该用户已被删除
8#
发表于 2015-3-4 04:02:46 | 只看该作者
Java是一种计算机编程语言,拥有跨平台、面向对java
飘飘悠悠 该用户已被删除
9#
发表于 2015-3-11 16:12:58 | 只看该作者
Java是一种计算机编程语言,拥有跨平台、面向对java
柔情似水 该用户已被删除
10#
发表于 2015-3-19 00:45:48 | 只看该作者
设计模式是高级程序员真正掌握面向对象核心思想的必修课。设计模式并不是一种具体"技术",它讲述的是思想,它不仅仅展示了接口或抽象类在实际案例中的灵活应用和智慧
只想知道 该用户已被删除
11#
发表于 2015-3-20 23:28:42 | 只看该作者
你一定会高兴地说,哈哈,原来成为Java高手就这么简单啊!记得Tomjava也曾碰到过一个项目经理,号称Java很简单,只要三个月就可以学会。
小妖女 该用户已被删除
12#
发表于 2015-3-27 03:10:53 | 只看该作者
如果你学过HTML,那么事情要好办的多,如果没有,那你快去补一补HTML基础吧。其实JSP中的Java语法也不多,它更象一个脚本语言,有点象ASP。
灵魂腐蚀 该用户已被删除
13#
发表于 2015-3-27 08:08:07 | 只看该作者
多重继承(以接口取代)等特性,增加了垃圾回收器功能用于回收不再被引用的对象所占据的内存空间,使得程序员不用再为内存管理而担忧。在 Java 1.5 版本中,Java 又引入了泛型编程(Generic Programming)、类型安全的枚举、不定长参数和自动装/拆箱等语言特性。
愤怒的大鸟 该用户已被删除
14#
发表于 2015-3-27 15:37:36 | 只看该作者
其实说这种话的人就如当年小日本号称“三个月拿下中国”一样大言不惭。不是Tomjava泼你冷水,你现在只是学到了Java的骨架,却还没有学到Java的精髓。接下来你得研究设计模式了。
因胸联盟 该用户已被删除
15#
发表于 2015-4-3 20:49:00 | 只看该作者
还好,SUN提供了Javabean可以把你的JSP中的 Java代码封装起来,便于调用也便于重用。
飘灵儿 该用户已被删除
16#
发表于 2015-4-12 17:27:53 | 只看该作者
另外编写和运行Java程序需要JDK(包括JRE),在sun的官方网站上有下载,thinking in java第三版用的JDK版本是1.4,现在流行的版本1.5(sun称作J2SE 5.0,汗),不过听说Bruce的TIJ第四版国外已经出来了,是专门为J2SE 5.0而写的。
透明 该用户已被删除
17#
发表于 2015-4-16 00:46:38 | 只看该作者
Java 不同于一般的编译执行计算机语言和解释执行计算机语言。它首先将源代码编译成二进制字节码(bytecode),然后依赖各种不同平台上的虚拟机来解释执行字节码。从而实现了“一次编译、到处执行”的跨平台特性。
深爱那片海 该用户已被删除
18#
发表于 2015-4-17 03:00:54 | 只看该作者
关于设计模式的资料,还是向大家推荐banq的网站 [url]http://www.jdon.com/[/url],他把GOF的23种模式以通俗易懂的方式诠释出来,纯Java描述,真是经典中的经典。
精灵巫婆 该用户已被删除
19#
发表于 2015-4-21 14:41:04 | 只看该作者
设计模式是高级程序员真正掌握面向对象核心思想的必修课。设计模式并不是一种具体"技术",它讲述的是思想,它不仅仅展示了接口或抽象类在实际案例中的灵活应用和智慧
再见西城 该用户已被删除
20#
发表于 2015-4-24 04:48:42 | 只看该作者
Java是一个纯的面向对象的程序设计语言,它继承了 C++语言面向对象技术的核心。Java舍弃了C ++语言中容易引起错误的指针(以引用取代)、运算符重载(operator overloading)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-6-26 21:05

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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