了解下JAVA的Java可复用事务处置的计划与完成剖析
再说第三点:我并没有提到服务器也要整合,然后是IDE,一个好的IDE能够200%提高开发的速度,就说图形方面:你是经过简单托拽和点击就能实现功能好那。今朝,面向对象是软件体系建模的支流手艺,利用面向对象手艺建模的次要目标之一是可复用性。为了更好地办理软件复用性和扩大性成绩,计划形式失掉了愈来愈多的存眷与使用。
分离command计划形式和Java言语的反射手艺,本文计划完成了一个可复用的事务处置框架。
在面向对象的体系计划中,有些方面的可复用性常常被疏忽了,用户界面(UserInterface,下文简称UI)及其事务处置就是个中之一。一个完全的UI计划应当包含两部分:UI及其响应的事务处置机制,没有事务处置机制的UI是没有效的,关于事务处置,也应当思索可复用计划。固然看上往有些奇异,可是这类计划是有有用代价的——进步了代码的可复用性、强健性和可保护性。
command计划形式的次要计划头脑是把对某一对象的哀求封装为一个对象,从而把收回命令的义务和实行义务的义务分隔,委派给分歧的对象,哀求的一方不用晓得吸收哀求一方的接口。
这类引进第三方类的做法是计划形式所习用的,引进的第三方类解耦了紧耦合对象。command计划形式中,第三方类解耦了挪用操纵的对象与晓得怎样完成该操纵的对象,进步了软件的可复用性。
JDK1.1及其今后的版本,引进了反射(reflection)手艺。反射是Java中十分凸起的静态特性,使用它能够加载一个运转时才得出名字的class,猎取其完全布局,这统统是经由过程反射API完成的。
//UIDemo1
importjava.awt.*;
importjava.awt.event.*;
importjavax.swing.*;
publicclassUIDemo1implements
ActionListener
{
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)
{
//provideequalitycheck
toseeifsourcewasthe
//buttondefinedabove..
usefulonlyifweregister
//thisActionListener
withmultiplesources
if(ae.getSource().equals(button))
{
index=++index%params.length;
area.setText(params);
}
}
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);
}
}
publicstaticvoidmain(Stringargs[])
{
if(args.length>1)
{
UIDemo2two=newUIDemo2(args);
}else{
usage();
}
}
privatestaticvoidusage(){
System.err.println
("Youmayexcutethisprogramasbelow:");
System.err.println
("javaUIDemo2params1params2...");
System.exit(-1);
}
}
//SemiReusableActionListener
importjava.awt.event.*;
publicclassSemiReusableActionListener
implementsActionListener
{
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!");
//setuprequiredinformation
touseGenericActionListener
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("Couldnot
findthemethod:
"+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);
}
}
publicstaticvoidmain(Stringargs[])
{
if(args.length>1){
UIDemo3three=newUIDemo3(args);
}else{
usage();
}
}
privatestaticvoidusage()
{
System.err.println
("Youmayexcutethisprogramasbelow:");
System.err.println
("javaUIDemo3params1params2...");
System.exit(-1);
}
}
//ReusableWindowAdapter
importjava.awt.*;
importjava.awt.event.*;
publicclassReusableWindowAdapter
extendsWindowAdapter{
publicvoidwindowClosing
(WindowEventwe){
Objectsource=we.getSource();
if(sourceinstanceofFrame)
{
((Frame)source).setVisible(false);
((Frame)source).dispose();
System.exit(0);
}
}
}
因为能用到多少功能就用多少,不能用就不用!总的来说:要简单要性能好,可以不用框架。你说java复杂,就是因为你把java(j2ee)与这些框架混在了一起。 是一种简化的C++语言 是一种安全的语言,具有阻绝计算机病毒传输的功能 Java 编程语言的风格十分接近C、C++语言。 是一种为 Internet发展的计算机语言 你就该学一学Servlet了。Servlet就是服务器端小程序,他负责生成发送给客户端的HTML文件。JSP在执行时,也是先转换成Servlet再运行的。虽说JSP理论上可以完全取代Servlet,这也是SUN推出JSP的本意,可是Servlet用来控制流程跳转还是挺方便的,也令程序更清晰。接下来你应该学习一下Javabean了,可能你早就看不管JSP在HTML中嵌Java代码的混乱方式了,这种方式跟ASP又有什么区别呢? 有时间再研究一下MVC结构(把Model-View-Control分离开的设计思想) 如果你学过HTML,那么事情要好办的多,如果没有,那你快去补一补HTML基础吧。其实JSP中的Java语法也不多,它更象一个脚本语言,有点象ASP。 你现在最缺的是实际的工作经验,而不是书本上那些凭空想出来的程序。 《JAVA语言程序设计》或《JAVA从入门到精通》这两本书开始学,等你编程有感觉的时候也可以回看一下。《JAVA读书笔记》这本书,因为讲的代码很多,也很容易看懂,涉及到面也到位。是你学习技术巩固的好书,学完后就看看《JAVA编程思想》这本书,找找一个自己写的代码跟书上的代码有什么不一样。 是一种使用者不需花费很多时间学习的语言
页:
[1]