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

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

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

    laoding
    本來我以為,隱身了別人就找不到我,沒有用的,像我這樣拉風的男人,無論走到哪里,都像在黑暗中的螢火蟲一樣,那樣的鮮明,那樣的出眾。我那憂郁的眼神,稀疏的胡茬,那微微隆起的將軍肚和親切的笑容......都深深吸引了眾人......
    posts - 0,  comments - 37,  trackbacks - 0
    Singleton模式主要作用是保證在Java應用程序中,一個類Class只有一個實例存在。

    在很多操作中,比如建立目錄 數據庫連接都需要這樣的單線程操作。

    還有, singleton能夠被狀態化; 這樣,多個單態類在一起就可以作為一個狀態倉庫一樣向外提供服務,比如,你要論壇中的帖子計數器,每次瀏覽一次需要計數,單態類能否保持住這個計數,并且能synchronize的安全自動加1,如果你要把這個數字永久保存到數據庫,你可以在不修改單態接口的情況下方便的做到。

    另外方面,Singleton也能夠被無狀態化。提供工具性質的功能,

    Singleton模式就為我們提供了這樣實現的可能。使用Singleton的好處還在于可以節省內存,因為它限制了實例的個數,有利于Java垃圾回收(garbage collection)。

    我們常常看到工廠模式中類裝入器(class loader)中也用Singleton模式實現的,因為被裝入的類實際也屬于資源。

    下面來看看例子

    public class Singleton {
        
        
    private static Singleton singleton = new Singleton();
        
        
    private Singleton() {
            System.out.println(
    "已產生對象實例。");
        }
        
        
    public static Singleton getInstance() {
            
    return singleton;
        }

    測試類
    public class Main {

        
    /**
         * 
    @param args
         
    */
        
    public static void main(String[] args) {
            
    // TODO Auto-generated method stub
            System.out.println("Start.");
            System.out.println(
    "start obj1");
            Singleton obj1 
    = Singleton.getInstance();
            System.out.println(
    "end obj1");
            
            System.out.println(
    "start obj2");
            Singleton obj2 
    = Singleton.getInstance();
            System.out.println(
    "end obj2");
            
            
    if(obj1 == obj2) {
                System.out.println(
    "對象是同一個對象");
            } 
    else {
                System.out.println(
    "對象不是同一個對象");
            }
            
            System.out.println(
    "End.");

        }

    }


    運行測試類,看到控制臺的輸出如下:
    Start....
    start obj1
    已產生對象實例。
    end obj1
    start obj2
    end obj2
    對象是同一個對象
    End....


    我們從上面開始看,在start obj1和end obj1直接輸出了“已產生對象實例”說明有對象產生了,而start obj2和end obj2之間卻沒有打印,為什么呢?因為取得obj2對象的時候并沒有再創建新的對象,而是去拿到跟obj1同一個對象,在Singleton類中已經創建了這個對象,并且是static的,這樣也就可以解釋后面的輸出“對象是同一個對象”這句話了。
    posted on 2009-10-14 15:13 老丁 閱讀(317) 評論(0)  編輯  收藏 所屬分類: 設計模式

    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    本博客主為學習和復習之用,無關其他,想罵人的繞道
    Email:dkm123456@126.com
    大家一起交流進步
    QQ:283582761


    <2025年5月>
    27282930123
    45678910
    11121314151617
    18192021222324
    25262728293031
    1234567

    留言簿(4)

    我參與的團隊

    文章分類(50)

    文章檔案(48)

    相冊

    朋友

    搜索

    •  

    積分與排名

    • 積分 - 96446
    • 排名 - 600

    最新評論

    主站蜘蛛池模板: 人人狠狠综合久久亚洲| 亚洲午夜无码久久久久软件| 中文字幕亚洲一区| 亚洲爆乳精品无码一区二区三区| 香蕉高清免费永久在线视频 | 免费观看午夜在线欧差毛片| 久久久亚洲精品蜜桃臀| 亚洲黄色免费在线观看| 亚洲AV无码一区二区一二区| 暖暖日本免费在线视频| 国产aⅴ无码专区亚洲av| 国色精品va在线观看免费视频| 国产大片线上免费观看| 国产黄色一级毛片亚洲黄片大全| 亚洲国产女人aaa毛片在线| 亚洲1区2区3区精华液| 国产无遮挡吃胸膜奶免费看| 久久精品亚洲AV久久久无码 | 中文字幕无码免费久久99| 亚洲一区二区三区在线| 日韩一区二区在线免费观看| 牛牛在线精品观看免费正| 国产成人yy免费视频| 老司机亚洲精品影视www| a毛片免费全部播放完整成| 日本中文一区二区三区亚洲| 亚洲一区二区免费视频| 免费看的成人yellow视频| 麻豆va在线精品免费播放| 狠狠久久永久免费观看| 好湿好大好紧好爽免费视频| 永久黄网站色视频免费| 一级a性色生活片久久无少妇一级婬片免费放 | 亚洲AV区无码字幕中文色| 久久久久久久久久免免费精品 | 亚洲狠狠成人综合网| 国产大片免费网站不卡美女| 亚洲av乱码中文一区二区三区| 国产成人麻豆亚洲综合无码精品| 国产高清不卡免费在线| 免费国产高清毛不卡片基地 |