<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

    最新評論

    主站蜘蛛池模板: 最近免费中文字幕mv在线电影| 一个人免费播放在线视频看片| 99精品视频在线观看免费专区| 亚洲乱码精品久久久久..| 一本久久A久久免费精品不卡| 亚洲AV无码专区日韩| www在线观看播放免费视频日本| 亚洲精华国产精华精华液| 日日麻批免费40分钟日本的| 日本最新免费不卡二区在线| 亚洲日韩中文字幕无码一区| 啦啦啦www免费视频| 亚洲综合色成在线播放| eeuss草民免费| 午夜亚洲AV日韩AV无码大全| 亚洲人成网站999久久久综合| 毛片免费观看网站| 老司机午夜在线视频免费观| 久久久久亚洲av成人无码电影| 亚洲日本乱码一区二区在线二产线 | 国产精品玖玖美女张开腿让男人桶爽免费看 | 国产成人免费a在线视频app| 男人扒开添女人下部免费视频| 亚洲免费视频观看| 在线观看亚洲AV日韩AV| 亚洲国产成人精品女人久久久 | 亚洲黄色中文字幕| 永久免费AV无码国产网站| 边摸边吃奶边做爽免费视频99 | 国产亚洲精彩视频| 亚洲一区二区三区无码中文字幕| 免费不卡在线观看AV| 亚洲日韩一中文字暮| jlzzjlzz亚洲乱熟在线播放| 24小时在线免费视频| 亚洲精品国产首次亮相| 亚洲欧洲无码AV电影在线观看| 91视频国产免费| 国产精品成人69XXX免费视频| 亚洲成av人片在线看片| 亚洲国产主播精品极品网红|