1.餓漢模式
package com.fullstacker.study.designpattern.singleton;
/** * 餓漢模式 餓漢模式是執行緒安全的單例模式
* * @author xingguishuai
* @create 2017-03-27-15:53
**/public class hungrysingleton
public static hungrysingleton getintance()
}
2.懶漢模式
package com.fullstacker.study.designpattern.singleton;
/** * 懶漢模式
* * @author xingguishuai
* @create 2017-03-27-15:58
**/public class lazysingleton
/*** 功能描述:判斷是否存在存在例項,如果不存在則,建立物件
* 此時,否則返回例項,為執行緒不安全
* @return
* @param
* @author xingguishuai
* @date 2017-03-27 15:59
* @since 1.0
*/public static lazysingleton getintance()
return intance;
}/**
* 功能描述:判斷是否存在存在例項,如果不存在則,建立物件
* 此時,否則返回例項,同步方式獲取,但粒度較大,效率較低,可以使用雙重判斷的方法以優化
* @return
* @param
* @author xingguishuai
* @date 2017-03-27 15:59
* @since 1.0
*/public static synchronized lazysingleton getintancesyn()
return intance;
}}
3.雙重判斷的方法(懶漢模式優化)
package com.fullstacker.study.designpattern.singleton;
/** * 雙重判斷法
* * @author xingguishuai
* @create 2017-03-27-16:06
**/public class dubblesingleton
/*** 功能描述:判斷是否存在存在例項,如果不存在則,建立物件
* 此時,否則返回例項,為執行緒不安全
* @return
* @param
* @author xingguishuai
* @date 2017-03-27 15:59
* @since 1.0
*/public static dubblesingleton getintance() catch (interruptedexception e)
//同步**塊
synchronized (dubblesingleton.class)}}
return intance;
}}
4.使用靜態內部類來作為singleton的容器
public class staticsingleton
private static class singletonholder
public static staticsingleton getinstance ()
}
單例模式的三種實現方式
所謂 餓漢式 是指單例項在類載入時刻就已構造完成。public class singleton1 類載入的初始化階段,會給靜態變數instance賦值,此時單例項得到構建 private static singleton1 instance newsingleton1 public static s...
實現單例的三種方式
1 必須在該類中 自己先建立出乙個物件並私有化物件.2 私有化自身的構造器 防止外界通過構造器建立新的物件 3 想外暴露乙個公共的靜態方法用於獲取自身的物件 目的 保證某乙個在整個應用中某乙個類有且只有乙個例項 乙個類在堆記憶體只存在乙個物件 即所有指向該型別例項的引用都指向同一塊記憶體空間。cla...
單例的三種實現方式
方式一 類方法實現單例模式 class mysql instance none def init self,host,port self.host host self.port port q classmethod defsingleton cls ifnot cls.instance cls.in...