《研磨设计模式》chap5 单例模式singleton
生活随笔
收集整理的這篇文章主要介紹了
《研磨设计模式》chap5 单例模式singleton
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1. 模式介紹
1.1 飽漢式單例實現
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的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 《研磨设计模式》chap6 工厂模式fa
- 下一篇: 《研磨设计模式》chap12 观察者模式