減少對象的技巧 1: 加上好的存取函數(shù)
在 Swing 工具箱的初始版本中, 小對象的臨時創(chuàng)建, 象 Point, Rectangle 和 Dimension極大地阻礙了性能. 把它們放在一個 Point 或者 Rectangle 中來一次返回多個值, 看起來更有效, 實際上, 對象的創(chuàng)建比多個方法調(diào)用代價更高. 在 Swing 的*后發(fā)布之前, 通過給 Component 和其他一些類加一些新的存取方法, 問題就簡單地解決了。getBounds() 的舊形式仍然支持; 好的存取方法簡單地提供了有效的方法來達到相同的目的. 結(jié)果是, Rectangle 的接口全部在 Component 中使用. 當修改 Swing 包支持和使用這樣的存取函數(shù)后, 在許多 Swing 操作中比以前要快到兩倍. 這很好, 因為 GUI 代碼非常注意性能 -- 用戶等待發(fā)生一些事, 希望 UI 操作瞬間完成.
使用這個技術(shù)不好的地方就是你的對象提供了更多的方法, 有多于一個的方法來得到相同的信息, 就使文檔更大更復雜, 可能使用戶害怕. 但是就象 Swing 的例子顯示的, 在關(guān)注性能的情況下, 這樣的優(yōu)化技術(shù)是有效的.
技巧 2: 利用可變性
除了給 Component 加上原類型的存儲函數(shù) -- 象上面討論的 getX() 函數(shù) -- 以外, Java 2 在 AWT 和 Swing 中也使用了另一種技術(shù)來減少對象創(chuàng)建, 允許一個調(diào)用者把邊界作為一個 Rectangle 得到, 但是不需要任何臨時對象的創(chuàng)建.調(diào)用者仍然需要創(chuàng)建一個 Rectangle 對象, 但它可以在后來的調(diào)用中重用. 如果一個調(diào)用者在一系列的 Component 中循環(huán), 可以只創(chuàng)建一個 Rectangle 對象, 在每個 Component 中重用. 注意這個技術(shù)只用于可變性對象; 你不能用這種方法消除 String 的創(chuàng)建.
【招生辦】
成都鐵路衛(wèi)生學校
聯(lián)系人:楊老師
咨詢電話:028-81459650
移動電話:13096365338
咨詢QQ:2763031284
郵箱:2763031284@qq.com
地址:四川省成都市郫縣團結(jié)
網(wǎng)址:
成都鐵路衛(wèi)生學校 http://www.tineng.net/
高考200分能上什么大學 http://www.57fenshu.com/
成都方興學校 http://www.bangboer.com/u028fx/ |
 |
|