單例模式屬於物件建立性質的模式,用於產生乙個物件的具體例項,並且可以確保系統中乙個類只能產生乙個例項。
public class singleton
public static singleton getinstance()
}
public class lazysingleton
private static lazysingleton instance = null;
public static synchronized lazysingleton getinstance()
}
public class staticsingleton
private static class singletonholder
public static final staticsingleton getinstance()
}
建立5個執行緒,模擬多執行緒環境下的效能
public class client implements runnable
@override
public void run()
}
懶漢式 185ms 190ms
飢餓式 54ms 49ms
內部類式 56ms 61ms
在多執行緒條件下,懶漢式單例耗時要比飢餓式耗時要多很多,因為懶漢式為了使用延遲載入而引入了同步關鍵字,降低了系統效能
而內部類式單例既可以做到延遲載入,又不必使用同步關鍵字,是一種比較完善的實現。
設計模式 四 單例模式
singleton pattern 單例模式 singleton pattern 確保某乙個類只有乙個例項,向整個系統提供這個唯一例項,這個類稱為單例類,它提供全域性訪問的方法。單例模式是一種物件建立型模式。單例模式是結構最簡單的設計模式一,在它的核心結構中只包含乙個被稱為單例類的特殊類。單例模式的...
JAVA設計模式(四)單例模式
size medium b 單例模式 b size 確保乙個類只有乙個例項,並提供乙個全域性訪問站點。類圖 img 1.執行緒不安全的單例模式 單例模式 執行緒不安全 public class singletontest public static singletontest getinstance...
JS 設計模式 四(單例)
單例是乙個全域性變數,使用單例可以更好的控制全域性變數,還可以利用分支技術來封裝瀏覽器之間的差異。網頁中使用全域性變數由於可以被重寫風險很大。所以使用單例會更好的控制全域性變數。單例模式多數都是在載入指令碼的時候被建立出來。不過對於一些使用方式單例適合在用到的時候被載入,所以需要乙個可以懶載入的單例...