|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
一旦你有了思想,那你编的程序就有了灵魂,不管是什么语言到了你的手里都会是你的工具而已,他们的价值是能尽快帮助你实现你想要的目标。但是如果你没有了思想,那就像是海里的帆船失去了船帆,是很难到打海的另一边的。心得比来这个段工夫都是忙于进修SpringFramework,那东东好样的,只是方才学完Struts,Hibernate,有来了这个,呵呵,,感到挺累的。“你怎样把这两个不干系的工具撤到一同?”,的确是如许!不管从他们的计划,完成,利用等方面他们是风马不接,但自己以为从了解的方面看他们有点相似。何况进修要从对照中学呀!这对初学者会有匡助于了解。主要声明:自己都是用本人的言语写的,有专业术语不合错误还请人人指出。:-就说计划形式Decorator,也就是粉饰形式,这还欠好了解?在原本的工具长进行粉饰一下即是粉饰了。既然是粉饰,你要有主体呀(被润色的工具),还要有粉饰品。可是不论你粉饰来粉饰往,他的实质是稳定的。就象人带上了面具,但他仍是人。墙上打上了油漆,但它仍是墙呀。你大概以为这是空话。但了解这点很主要(这是跟战略形式Strategy的区分),自己以为这个是了解好Decorator形式很主要的一点。在开辟中你常常要加强一个类的功效,大概是打消一个类的某些功效,可是一个类给浩瀚的功效举行粉饰了今后,大概本来的类已改头换面了,你常常会感应茫然,实在,你次要捉住他的主体,头脑内里时候要晓得你如今所作的事情就是为这个主体举行妆扮的事情。研讨过Jive的都晓得,内里的Filter就是用了Decorator计划形式,那末在这个计划内里,它的主体是甚么?ForumMessage,无疑是ForumMessage。粉饰品固然是Filter了,以是我们在作这件事变的时分一直是以ForumMessage为中心的,Filter举行粉饰的时分,你万万不要健忘你如今是为ForumMessage而事情!有关于jive研讨的文章,网上一年夜堆,如今看看一个对照复杂的Decorator://好比有一个笼统构件:publicinterfaceComponent{voidoperation();}//一个详细构件:publicclassConcreteComponentimplementsComponent{publicvoidoperation(){//Writeyourcodehere}}//一个笼统粉饰:publicclassDecoratorimplementsComponent{privateComponentcomponent;//援用…….….…//贸易办法,委派给构件publicvoidoperation(){component.operation();}}//一个详细粉饰:publicclassConcreteDecoratorextendsDecorator{/***贸易办法*/publicvoidoperation(){//一些详细的粉饰的代码......super.operation();//主体//一些详细的粉饰的代码.......}}......我们次要看看,在ConcreteDecorator中的operation()办法,他的父类是托付到component组建来完成的,实在它就是主体,一些粉饰代码城市在这个办法(主体)实行行进行“预处置”或是实行落后行“扫尾”。可不是,从下面很简单就看出了,笼统粉饰中的operation()办法没有在详细的粉饰类中举行“通盘”掩盖,由于他用了super.operation();如许的语句。可见粉饰形式中不论怎样,你都要找到相似这个的办法。申明他的主体还在。(这是跟战略形式Strategy的区分)说了这么多,不晓得人人有无感到到ConcreteDecorator类中的operation()办法跟SpringAOP中的InvocationHandler接口的invoke()办法有点相类是呢?我们来看看要完成InvocationHandler时分要重写的invoke()办法:publicObjectinvoke(Objectproxy,Methodmethod,Object[]args)throwsThrowable{…………………….result=method.invoke(originalObject,args);……………………………..returnresult;}InvocationHandler.invoke办法将在被代办署理类的办法被挪用之前触发。经由过程这个办法中,我们能够在被代办署理类办法挪用的前落后行一些处置,如下面代码中所示,InvocationHandler.invoke办法的参数中传送了以后被挪用的办法(Method),和被挪用办法的参数。同时,我们能够经由过程Method.invoke办法挪用被代办署理类的原始办法完成。如许,我们就能够在被代办署理类的办法挪用前后年夜做文章。(申明:援用了Spring开辟指南中的一段)在回到粉饰形式,其办法operation()在实行前和实行后,也能够对它年夜做文章。云云看来,SpringAOP和Decorator,从了解层面下去看,的确有点相象,注重:只是了解层面,而他们的完成完整两马事!实在次要是人人怎样对待这个成绩,依照自己的了解,SpringAOP也能够说是一种狭义的粉饰,但它又不是粉饰形式。它一样也是对某个办法加上了限定,好比insert()的时分,你要对它做实行前开启事件和实行后提交或回滚如许的“粉饰”。又好比你也能够对某团体操纵资本后做log如许的粉饰事情等等。他们的不异的地方就这么点。AOP也不是甚么新的工具,固然假如你的AOP是容器(Jboss4.0)完成的话,那末依照下面说的,你的一些办法就会被容器所“粉饰”。云云看来,更多的时分能够了解为SpringAOP和一些AOP容器是在体系级的,容器级的“粉饰”。而粉饰形式则是营业级的粉饰。这点实在从客户端也很简单了解。假如是AOP,程序员能够宁神的写你的代码(即便有点笨也不怕,有AOP护着呢)。由于体系将在体系运转时分对这段代码举行“粉饰”。也就是说,这些粉饰不会呈现在客户真个代码中,而Decorator形式呢?呵呵,这个时分程序员要有摇头脑了,他们要本人组装一些粉饰类,依照某一种机制对主体举行粉饰。也就是说,这些润色类要呈现在客户真个代码中。看代码就晓得了:--)InputStreamReaderinput=newInputStreamReader(System.in);BufferedReaderbr=newBufferedReader(input);....//主体是System.in
微软什么都提供了。你可以试想一下,如果你是新手,你是希望你点一下按钮程序就能运行那,还是想自己一点一点的组织结构,然后打包发部,调错再打包...... |
|