• 软件测试技术
  • 软件测试博客
  • 软件测试视频
  • 开源软件测试技术
  • 软件测试论坛
  • 软件测试沙龙
  • 软件测试资料下载
  • 软件测试杂志
  • 软件测试人才招聘
    暂时没有公告

字号: | 推荐给好友 上一篇 | 下一篇

软件的性能设计

发布: 2009-9-01 11:39 | 作者: 不详 | 来源: 领测软件测试网 | 查看: 97次 | 进入软件测试论坛讨论

领测软件测试网

可变性的利用

  除了在组件中添加象上面讨论的getX()等具有简单数据类型值的临时函数外,Java 2还使用了其他的技术来减少在AWT和Swing中的对象创建活动。在组件和其他的GUI类中添加另一种版本的getBounds(),就可以在没有创建临时对象的前提上使调用程序得到象Rectangle类型的返回值:

  public Rectangle getBounds(Rectangle returnVal) {

   returnVal.x = myBounds.x;

   returnVal.y = myBounds.y;

   returnVal.height = myBounds.height;

   returnVal.width = myBounds.width;

   return returnVal;

  }

  调用程序仍然必须创建一个Rectangle对象,不过,可以在以后的调用中重用它。如果一个调用程序反复调用许多Component对象,就可以创建一个Rectangle对象并在每个Component中使用它。需要注意的是,这一技术只适用于可变的对象类型,不可能通过这种方式减少创建String类对象。

  结合二家之长

  一个更好的解决Point等简单类的对象创建问题的方法是使得Point类成为不可变的,然后再定义一个可变的子类,具体方法如下面的例子所示:

  public class Point {

   protected int x, y;

   public Point(int x, int y) { this.x = x; this.y = y; }

   public final int getX() { return x; }

   public final int getY() { return y; }

  }

  public class MutablePoint extends Point {

   public final void setX(int x) { this.x = x; }

   public final void setY(int y) { this.y = y; }

  }

  public class Shape {

   private MutablePoint myLocation;

   public Shape(int x, int y) { myLocation = new MutablePoint(x, y); }

   public Point getLocation() { return (Point) myLocation; }

  }

  在上面的例子中,Shape可以安全地返回myLocation的地址,因为调用程序如果试图修改这些域或调用他们的"调节器"就会返回一个出错信息。当然,调用程序仍然可以将Point转换为MutablePoint,但很明显这会带来不安全性,虽然调用程序也会得到它们所需要的返回值。)C++的开发人员会注意到,这一技术与C++中的返回一个Rectangle的常量地址(const Rectangle&)有点类似━━Java不具备这样的特性。

  在Java 1.3类库中的java.math.BigInteger类中,一个类无需创建新的对象就返回一个"只读的"对象。MutableBigInteger类不是公开的,它只供java.math类库内部使用。但由于BigInteger类中的一些方法(例如gcd())是由许多的算术操作组成的,完成这些操作而无需创建临时对象将极大地改善程序的性能

文章来源于领测软件测试网 https://www.ltesting.net/

1010/10<12345678910

关于领测软件测试网 | 领测软件测试网合作伙伴 | 广告服务 | 投稿指南 | 联系我们 | 网站地图 | 友情链接
版权所有(C) 2003-2010 TestAge(领测软件测试网)|领测国际科技(北京)有限公司|软件测试工程师培训网 All Rights Reserved
北京市海淀区中关村南大街9号北京理工科技大厦1402室 京ICP备10010545号-5
技术支持和业务联系:info@testage.com.cn 电话:010-51297073

软件测试 | 领测国际ISTQBISTQB官网TMMiTMMi认证国际软件测试工程师认证领测软件测试网