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

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

    Singleton模式就為我們提供了這樣實現的可能。使用Singleton的好處還在于可以節(jié)省內存,因為它限制了實例的個數,有利于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對象的時候并沒有再創(chuàng)建新的對象,而是去拿到跟obj1同一個對象,在Singleton類中已經創(chuàng)建了這個對象,并且是static的,這樣也就可以解釋后面的輸出“對象是同一個對象”這句話了。
    posted on 2009-10-14 15:13 老丁 閱讀(316) 評論(0)  編輯  收藏 所屬分類: 設計模式

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


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


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

    留言簿(4)

    我參與的團隊

    文章分類(50)

    文章檔案(48)

    相冊

    朋友

    搜索

    •  

    積分與排名

    • 積分 - 96426
    • 排名 - 600

    最新評論

    主站蜘蛛池模板: 午夜时刻免费入口| 亚洲av无码精品网站| 在线精品免费视频无码的| 每天更新的免费av片在线观看 | 亚洲AV本道一区二区三区四区| 亚洲精品线路一在线观看| 国产大片91精品免费看3| 免费看又爽又黄禁片视频1000| 国产免费av片在线看| 67194成是人免费无码| 四虎成人免费大片在线| 成年女人午夜毛片免费看| 色妞WWW精品免费视频| 色视频色露露永久免费观看| 麻豆国产精品入口免费观看| 免费在线观看你懂的| 亚洲国产一区明星换脸| 久久久精品国产亚洲成人满18免费网站| 亚洲日韩中文在线精品第一| 国产亚洲视频在线播放| 亚洲av综合avav中文| 亚洲视屏在线观看| 国产成人精品日本亚洲18图| 亚洲精品成a人在线观看☆| 色妞www精品视频免费看| 大片免费观看92在线视频线视频| 国产免费A∨在线播放| 华人在线精品免费观看| 无码A级毛片免费视频内谢| 国产免费久久精品99re丫y| 免费毛片在线播放| 久99精品视频在线观看婷亚洲片国产一区一级在线 | 99在线精品免费视频九九视| 黄页免费的网站勿入免费直接进入| 久久精品a一国产成人免费网站| 国产精品冒白浆免费视频| 久久精品国产亚洲7777| 一区二区三区亚洲| 国产午夜亚洲精品| 在线播放免费人成视频网站| 久久久免费的精品|