|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
微软什么都提供了。你可以试想一下,如果你是新手,你是希望你点一下按钮程序就能运行那,还是想自己一点一点的组织结构,然后打包发部,调错再打包......计划 形貌:
计数代办署理形式在客户对象挪用服务供应者对象上办法的前后实行诸如日记(logging)和计数(counting)一系列附加功效时很有效。计数代办署理形式倡议把这些附加功效封装在一个独自的对象,这个对象就是指计数代办署理对象,而不是把这些附加的功效完成放到服务供应者的外部。优秀的对象计划的一个特性就是对象要专注于供应特定的功效。换句话说,幻想的对象不该该做各类不干系的事变。把诸如日记(logging)和计数(counting)等相似的功效封装为一个独自的对象,而让服务供应者对象仅供应它本人的特定功效。也就是说,只同意服务供应者对象实行界说优秀、特定的义务。
计数代办署理被计划成能够被客户会见的与服务供应者具有不异接口的对象。客户对象不是间接会见服务供应者,而是挪用计数代办署理对象上的办法,计数代办署理实行需要的记录日记(logging)和计数(counting)功效后,再把办法挪用传送给服务供应着对象。如
Figure1:GenericClassAssociationWhentheCountingProxyPatternIsApplied
上面的例子申明了怎样在使用程序中使用计数代办署理。
例子:
让我们计划一个Order类,类条理如,OrderIF接口声了然getAllOrders读取数据库中一切定单的复杂办法。
Figure2:OrderClassHierarchy
publicinterfaceOrderIF{
publicVectorgetAllOrders();
}
作为getAllOrders办法完成的一部分,Order类有用了FileUtil工具类从order.txt文件中读取定单项。
publicclassOrderimplementsOrderIF{
publicVectorgetAllOrders(){
FileUtilfileUtil=newFileUtil();
Vectorv=fileUtil.fileToVector("orders.txt");
returnv;
}
}
让我们假定在挪用getAllOrders()时,必要把取数据文件所消费的工夫和纪录条数要纪录的log日记文件中。
这个附加的功效能够计划一个独自的OrderProxy类来完成,它与实在对象Order一样完成OrderIF接口。如许包管了OrderProxy对象供应给客户与实在对象Order一样的接口。如
Figure3:OrderClassHierarchywiththeCountingProxy
publicclassOrderProxyimplementsOrderIF{
privateintcounter=0;
publicVectorgetAllOrders(){
Orderorder=newOrder();
counter++;
longt1=System.currentTimeMillis();
Vectorv=order.getAllOrders();
longt2=System.currentTimeMillis();
longtimeDiff=t2?t1;
Stringmsg="Iteration="+counter+"::Time="+timeDiff+"ms";
//logthemessage
FileUtilfileUtil=newFileUtil();
fileUtil.writeToFile("log.txt”,msg,true,true);
returnv;
}
}
客户对象MainApp就想挪用实在对象Order一样挪用OrderProxy对象上的getAllOrders()办法,OrderProxy对象传送这个挪用给实在对象Order,盘算读取一切定单所消费的工夫并利用FileUtil匡助类将其记录的log日记文件中。在这个过程当中,OrderProxy饰演者计数代办署理的脚色。
publicclassMainApp{
publicstaticvoidmain(String[]args){
OrderIForder=newOrderProxy();
Vectorv=order.getAllOrders();
v=order.getAllOrders();
v=order.getAllOrders();
v=order.getAllOrders();
}
}
在性能方面,在windows平台下,.net可能是占强项,要是把.net放在sun开发的操作系统上去运行呢?根本就运行不了,.net对其它操作系统的支持也很弱,性能也可能比不上java。 |
|