日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

《研磨设计模式》chap5 单例模式singleton

發布時間:2025/3/21 asp.net 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 《研磨设计模式》chap5 单例模式singleton 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1. 模式介紹

1.1 飽漢式單例實現

public class Singleton {//定義一個變量來存儲創建好的類實例 private static Singleton uniqueInstance = null;private Singleton(){//}//定義一個方法來為客戶端提供類實例 public static synchronized Singleton getInstance(){//判斷存儲實例的變量是否有值if(uniqueInstance == null){//如果沒有,就創建一個類實例,并把值賦值給存儲類實例的變量uniqueInstance = new Singleton();}//如果有值,那就直接使用return uniqueInstance;} }

1.2 餓漢式單例實現

public class Singleton {//定義一個變量來存儲創建好的類實例,直接在這里創建類實例,只會創建一次 private static Singleton uniqueInstance = new Singleton(); }

2. 線程安全?

3. 擴展單例

有多個單例。

public class OneExtend {//定義一個缺省的key值的前綴 private final static String DEFAULT_PREKEY = "Cache";//緩存實例的容器 private static Map<String,OneExtend> map = new HashMap<String,OneExtend>();//用來記錄當前正在使用第幾個實例,到了控制的最大數目,就返回從1開始 private static int num = 1;private final static int NUM_MAX = 3; //定義控制實例的最大數目private OneExtend(){}public static OneExtend getInstance(){String key = DEFAULT_PREKEY+num;OneExtend oneExtend = map.get(key);if(oneExtend==null){oneExtend = new OneExtend();map.put(key, oneExtend);}//把當前實例的序號加1num++;if(num > NUM_MAX){//如果實例的序號已經達到最大數目了,那就重復從1開始獲取num = 1;}return oneExtend; }public static void main(String[] args) {OneExtend t1 = getInstance();OneExtend t2 = getInstance();OneExtend t3 = getInstance();OneExtend t4 = getInstance();OneExtend t5 = getInstance();OneExtend t6 = getInstance();System.out.println("t1=="+t1);System.out.println("t2=="+t2);System.out.println("t3=="+t3);System.out.println("t4=="+t4);System.out.println("t5=="+t5);System.out.println("t6=="+t6);} }

總結

以上是生活随笔為你收集整理的《研磨设计模式》chap5 单例模式singleton的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。