• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
    • 軟件測試技術
    • 軟件測試博客
    • 軟件測試視頻
    • 開源軟件測試技術
    • 軟件測試論壇
    • 軟件測試沙龍
    • 軟件測試資料下載
    • 軟件測試雜志
    • 軟件測試人才招聘
      暫時沒有公告

    字號: | 推薦給好友 上一篇 | 下一篇

    軟件的性能設計

    發布: 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())是由許多的算術操作組成的,完成這些操作而無需創建臨時對象將極大地改善程序的性能。

    文章來源于領測軟件測試網 http://www.kjueaiud.com/

    1010/10<12345678910

    關于領測軟件測試網 | 領測軟件測試網合作伙伴 | 廣告服務 | 投稿指南 | 聯系我們 | 網站地圖 | 友情鏈接
    版權所有(C) 2003-2010 TestAge(領測軟件測試網)|領測國際科技(北京)有限公司|軟件測試工程師培訓網 All Rights Reserved
    北京市海淀區中關村南大街9號北京理工科技大廈1402室 京ICP備10010545號-5
    技術支持和業務聯系:info@testage.com.cn 電話:010-51297073

    軟件測試 | 領測國際ISTQBISTQB官網TMMiTMMi認證國際軟件測試工程師認證領測軟件測試網

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>