單例設計模式1

2021-10-19 14:32:35 字數 837 閱讀 7877

所謂單例設計模式,即時採取一定的方法保證在整個軟體系統當中,對於某個類只能存在乙個物件例項,並且該類只提供乙個其物件例項的方法(靜態方法)

優點:這種寫法比較簡單,就是在類裝載的時候就完成例項化.避免了執行緒同步問題

缺點: 在類裝載的時候就完成了例項化,沒有達到lazy loading的效果.如果從始至終都沒有使用過這個例項,就會造成記憶體的浪費

這種方式基於classloader機制避免了多執行緒同步問題,不過,instance在類裝載的時就例項化,在單例模式中大多數都是呼叫getinstance方法,但是導致類裝載的原因有很多種,因此不能確定有其他方式(或者其他靜態方法)導致這個類被裝載,這時候初始化instance就沒有達到lazy loading的效果

結論: 這種單例模式可用,可能造成記憶體浪費

package com.atguigu.principle.singleton.type1;

/** */

public

class

singletontest01

// 2. 本類內部建立物件例項

// 惡漢破不及待 new 這個 物件

private

final

static singletontest01 instance =

newsingletontest01()

;// 3. 提供乙個工友的靜態方法,返回例項物件

public

static singletontest01 getinstance()

}更多:

設計模式(1) 單例設計模式

單例設計模式 定義 確保乙個類只有乙個例項,並且自行例項化,並向整個系統提供這個例項。餓漢式 class single 通過該方法獲得例項物件 public single getinstance 類中其他方法盡量使用static public static void say 通過定義乙個私有訪問許可...

設計模式1單例設計模式

public class sigleton return instance 第二種執行緒加鎖的,太耗時了,執行緒安全是安全,但是太耗時間 這種簡單粗暴的方式不合理,不管他是不是 這種引起的第三種 不推薦使用 public static synchronized sigleton getinstanc...

1 單例設計模式

a.餓漢單例,如下 public class emperor public static emperor getinstance 皇帝發話了 public static void say 類中其他方法,盡量是static public static void dosomething b.懶漢單例模式...