<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Flyingis

    Talking and thinking freely !
    Flying in the world of GIS !
    隨筆 - 156, 文章 - 16, 評論 - 589, 引用 - 0
    數據加載中……

    靜態設計

    ??? 作者:Flyingis

    ??? 在我們系統設計中,類方法的功能設計一般是改變對象的狀態,以及返回對象的信息。然而在這兩種情況之外,還存在一種類型的方法,其設計目的,是專為系統提供某種特定的功能,作為系統專用的一種工具,有的書上稱之為“工具方法”,一般情況下,我們會將這類方法設計成靜態的,保證系統中所有的代碼都可以使用它。在Java API中,最典型的例子之一是java.lang.Math類,它的所有變量、方法都是靜態的,專為數學計算而設計。

    static?double?PI;??//類變量,代表圓周率
    static?double?abs(double?a);??//類方法,取雙精度浮點類型參數的絕對值

    ??? 經過關鍵字static修飾后,對象中的實例變量或實例方法就成為了類變量、類方法,使用靜態的好處是,在代碼中,我們可以不用創建對象而直接使用類變量和類方法,這樣可以簡化我們的代碼,減少系統的內存開銷。例如,在多處需要使用這些方法所提供的功能時,如果使用實例方法,就需要我們創建多個對象來調用這些方法,對于一個規模龐大的系統來說,這通常是不理智的,使用靜態方法,可以保證該靜態方法僅會存在于系統內存中的一個地址段內。從這里也可以看出,靜態方法內應該盡量使用類變量代替實例變量,否則在多次調用靜態方法的過程中,會創建多個實例變量,增加系統占用的內存空間。

    ??? Java虛擬機第一次加載類的時候,會初始化靜態的代碼塊,這和實例變量和實例方法的加載時間不一樣。靜態的代碼可以存放在一個static代碼塊中,在類加載的時候一起初始化,但是在static代碼塊中不能拋出異常:

    static?{
    ??
    double?i?=?java.lang.Math.random();
    ??
    long?time?=?System.currentTimeMillis();
    }

    ??? 現在來理解“靜態”,簡而言之,就是一旦在系統中生成,其地址就不再改變的變量或方法,因此,靜態設計可以為我們提供如下方便:

    ??? 1.簡化或優化代碼。
    ??? 2.減少系統的內存開銷。
    ??? 3.分離出系統中的工具類。

    ??? 世上少有魚與熊掌兼得得事,如果漫無目的地使用靜態,也會出現一些意外情況。

    ??? 靜態變量在內存中只會存在一份拷貝,而靜態設計的目的之一是要為系統提供一系列通用的工具,因此所有的代碼都可以對靜態變量進行訪問或改變它的值,這樣容易使設計者對當前變量所存儲的值產生疑惑,不知道是誰動了我的“奶酪”。

    ??? 如果在程序上面靜態導入相應的包、類,在程序中可以不使用類名,這樣會給代碼閱讀者帶來混淆。靜態導入的格式:

    import?static?com.sun.staticClassTools.CommonTool;

    ??? 靜態變量(類變量)的生命周期是從類的第一次加載到應用程序的結束,使用靜態變量存儲集合通常會帶來巨大的內存開銷,因為Java垃圾回收不會回收在以靜態方式存在的集合對象,直到應用程序終止,哪怕這些集合對象已經不再使用。

    ??? 靜態設計違反OO設計原則,它是非面向對象的,類似于C語言中的全局函數,以過程的思想處理我們的代碼。

    ??? 因此,過度的靜態設計會給我們的程序帶來包括內存泄漏在內的多種問題,一般情況下,如果可以不使用靜態,應該盡量避免,保證系統中的每一處靜態設計都有其明確的存在的意義。

    posted on 2006-12-27 16:16 Flyingis 閱讀(2475) 評論(0)  編輯  收藏 所屬分類: JavaSE

    主站蜘蛛池模板: 亚洲视频在线免费看| 99精品视频在线观看免费专区| 夜夜亚洲天天久久| 免费在线观看a级毛片| 亚洲免费电影网站| 嫩草在线视频www免费看| 国产精品亚洲综合一区在线观看 | 成人亚洲国产精品久久| 亚洲三级在线播放| 久久国产精品亚洲综合| 国产亚洲精品拍拍拍拍拍| 国产一区视频在线免费观看| 91免费精品国自产拍在线不卡| 一个人看的www免费视频在线观看 一个人免费视频观看在线www | 又黄又爽无遮挡免费视频| 日韩一区二区a片免费观看| 久热免费在线视频| 国产性生大片免费观看性| 青草青草视频2免费观看| 亚洲精品久久无码| 国产99在线|亚洲| 91嫩草亚洲精品| 久久精品国产亚洲AV大全| 久久国产亚洲观看| 亚洲av无码专区在线播放| 国产精品亚洲精品日韩已方| 免费一级毛片正在播放| 免费人妻av无码专区| 国产免费啪嗒啪嗒视频看看| 日本高清免费网站| 国产成人免费ā片在线观看| 日本免费观看网站| 国产精品久久免费视频| 日本v片免费一区二区三区| 国产精品无码一区二区三区免费| 永久在线毛片免费观看| 国产精品四虎在线观看免费| 免费a级毛片在线观看| 亚洲免费无码在线| 亚洲精品无码专区在线在线播放| 亚洲色精品vr一区二区三区|