仓酷云

标题: 了解下JAVA的Java可复用事务处置的计划与完成剖析 [打印本页]

作者: 乐观    时间: 2015-1-18 11:15
标题: 了解下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[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);
}
}

//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[index]);
}
}
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)与这些框架混在了一起。
作者: 老尸    时间: 2015-1-20 18:46
是一种简化的C++语言 是一种安全的语言,具有阻绝计算机病毒传输的功能
作者: 仓酷云    时间: 2015-1-29 14:47
Java 编程语言的风格十分接近C、C++语言。
作者: 小女巫    时间: 2015-2-5 05:10
是一种为 Internet发展的计算机语言
作者: 若天明    时间: 2015-2-8 16:48
你就该学一学Servlet了。Servlet就是服务器端小程序,他负责生成发送给客户端的HTML文件。JSP在执行时,也是先转换成Servlet再运行的。虽说JSP理论上可以完全取代Servlet,这也是SUN推出JSP的本意,可是Servlet用来控制流程跳转还是挺方便的,也令程序更清晰。接下来你应该学习一下Javabean了,可能你早就看不管JSP在HTML中嵌Java代码的混乱方式了,这种方式跟ASP又有什么区别呢?
作者: 透明    时间: 2015-2-17 17:38
有时间再研究一下MVC结构(把Model-View-Control分离开的设计思想)
作者: 蒙在股里    时间: 2015-3-5 21:22
如果你学过HTML,那么事情要好办的多,如果没有,那你快去补一补HTML基础吧。其实JSP中的Java语法也不多,它更象一个脚本语言,有点象ASP。
作者: 深爱那片海    时间: 2015-3-11 01:52
你现在最缺的是实际的工作经验,而不是书本上那些凭空想出来的程序。
作者: 爱飞    时间: 2015-3-17 18:10
《JAVA语言程序设计》或《JAVA从入门到精通》这两本书开始学,等你编程有感觉的时候也可以回看一下。《JAVA读书笔记》这本书,因为讲的代码很多,也很容易看懂,涉及到面也到位。是你学习技术巩固的好书,学完后就看看《JAVA编程思想》这本书,找找一个自己写的代码跟书上的代码有什么不一样。
作者: 活着的死人    时间: 2015-3-24 18:12
是一种使用者不需花费很多时间学习的语言




欢迎光临 仓酷云 (http://ckuyun.com/) Powered by Discuz! X3.2