設計模式之單例模式

2021-09-28 18:27:58 字數 1077 閱讀 3348

物件也是資源的一種,而單例模式可以很好的避免物件這種資源浪費的問題,比如減少gc頻率,避免大物件的頻繁建立等等

單例模式的核心就是只返回乙個物件,並且只提供全域性的乙個訪問點即訪問方法。有如下幾種實現方法

沒有執行緒安全問題,適用於類成員少,占用記憶體不多的類,但無法做到延遲載入。

//不可繼承

public final class singleton ;

public static singleton getinstance()

}

執行緒不安全,可以做到延遲載入,可以加上synchronized關鍵字防止併發問題,但是效能相對較低

final class singletonlazy 

public static singletonlazy getinstance()

return single;

}}

final class singletondoublecheck 

public static singletondoublecheck getinstance() }}

return single;

}}

借助類載入的特點,由於singletonholder的靜態物件被放到靜態內部類holder裡面,而訪問類的靜態變數不會引起類的例項化,但會讓類進行初始化,為靜態變數賦予正確的初始值

final class singletonholder 

private static class holder

public static singletonholder getinstance()

}

列舉型別不允許被繼承,雖然是執行緒安全且只會例項化一次,但是列舉型別不能懶載入,如果呼叫其靜態方法,也會被例項化

enum singletonenum

public static void test()

public static singletonenum getinstance()

}

大概就到這裡。 

設計模式之單例模式

前一段時間買了一本秦小波寫的 設計模式之禪 網上對這書的評價很高。現在還沒有看很多,但是有些地方頗有感觸,也並不是所有的地方都能看懂,但是會慢慢研究的。自己對於設計模式的感覺就是乙個字 牛!感覺會23種設計模式並且會熟練運用的人,真的就是大師級的牛人了,設計模式是乙個專案主管或者架構師一定要會的東西...

設計模式之單例模式

package com.xie.singleton public class singleton 提供乙個共有的靜態的入口方法 public static singleton getinstance 懶漢式 延遲載入 提供乙個私有的靜態的成員變數,但不做初始化 private static sing...

設計模式之 單例模式

單例模式 singleton 保證乙個類僅有乙個例項,並提供乙個訪問它的全域性訪問點。單例模式 單件模式 使用方法返回唯一的例項 public class singleton private static singleton instance public static singleton geti...