仓酷云

标题: JAVA网站制作之Java计划形式之计数代办署理形式 [打印本页]

作者: 透明    时间: 2015-1-18 11:11
标题: JAVA网站制作之Java计划形式之计数代办署理形式
微软什么都提供了。你可以试想一下,如果你是新手,你是希望你点一下按钮程序就能运行那,还是想自己一点一点的组织结构,然后打包发部,调错再打包......计划  形貌:

  计数代办署理形式在客户对象挪用服务供应者对象上办法的前后实行诸如日记(logging)和计数(counting)一系列附加功效时很有效。计数代办署理形式倡议把这些附加功效封装在一个独自的对象,这个对象就是指计数代办署理对象,而不是把这些附加的功效完成放到服务供应者的外部。优秀的对象计划的一个特性就是对象要专注于供应特定的功效。换句话说,幻想的对象不该该做各类不干系的事变。把诸如日记(logging)和计数(counting)等相似的功效封装为一个独自的对象,而让服务供应者对象仅供应它本人的特定功效。也就是说,只同意服务供应者对象实行界说优秀、特定的义务。

  计数代办署理被计划成能够被客户会见的与服务供应者具有不异接口的对象。客户对象不是间接会见服务供应者,而是挪用计数代办署理对象上的办法,计数代办署理实行需要的记录日记(logging)和计数(counting)功效后,再把办法挪用传送给服务供应着对象。如

JAVA网站制作之Java计划形式之计数代办署理形式
登录/注册后可看大图

Figure1:GenericClassAssociationWhentheCountingProxyPatternIsApplied

  上面的例子申明了怎样在使用程序中使用计数代办署理。

  例子:

  让我们计划一个Order类,类条理如,OrderIF接口声了然getAllOrders读取数据库中一切定单的复杂办法。

JAVA网站制作之Java计划形式之计数代办署理形式
登录/注册后可看大图

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一样的接口。如

JAVA网站制作之Java计划形式之计数代办署理形式
登录/注册后可看大图

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。
作者: 简单生活    时间: 2015-1-20 16:41
一直感觉JAVA很大,很杂,找不到学习方向,前两天在网上找到了这篇文章,感觉不错,给没有方向的我指了一个方向,先不管对不对,做下来再说。
作者: 飘飘悠悠    时间: 2015-1-21 10:37
是一种由美国SUN计算机公司(Sun Microsystems, Inc.)所研究而成的语言
作者: 变相怪杰    时间: 2015-1-30 15:28
是一种使用者不需花费很多时间学习的语言
作者: 愤怒的大鸟    时间: 2015-2-6 13:46
Java是一种计算机编程语言,拥有跨平台、面向对java
作者: 不帅    时间: 2015-2-6 13:54
是一种为 Internet发展的计算机语言
作者: 兰色精灵    时间: 2015-2-8 02:51
Java语言支持Internet应用的开发,在基本的Java应用编程接口中有一个网络应用编程接口(java net),它提供了用于网络应用编程的类库,包括URL、URLConnection、Socket、ServerSocket等。Java的RMI(远程方法激活)机制也是开发分布式应用的重要手段。
作者: 活着的死人    时间: 2015-2-24 02:36
一直感觉JAVA很大,很杂,找不到学习方向,前两天在网上找到了这篇文章,感觉不错,给没有方向的我指了一个方向,先不管对不对,做下来再说。
作者: 老尸    时间: 2015-3-7 10:31
当然你也可以参加一些开源项目,一方面可以提高自己,另一方面也是为中国软件事业做贡献嘛!开发者在互联网上用CVS合作开发,用QQ,MSN,E-mail讨论联系,天南海北的程序员分散在各地却同时开发同一个软件,是不是很有意思呢?
作者: 深爱那片海    时间: 2015-3-14 23:17
科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。
作者: 莫相离    时间: 2015-3-21 14:52
吧,现在很流行的Structs就是它的一种实现方式,不过Structs用起来实在是很繁,我们只要学习其精髓即可,我们完全可以设计自己的MVC结构。然后你再研究一下软件Refactoring (重构)和极限XP编程,相信你又会上一个台阶。 做完这些,你不如整理一下你的Java代码,把那些经典的程序和常见的应用整理出来,再精心打造一番,提高其重用性和可扩展性。你再找几个志同道合的朋友成立一个工作室吧




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