設計模式:對問題行之有效的解決方式,其實就是一種思想。
解決的問題:就是可以保證乙個類在記憶體中的物件唯一性。
比如對於多個程式使用同乙個配置資訊物件時,就需要保證該物件的唯一性。
例如:(將下面的程式改為單例設計模式)
public
class dmo10
}class test
public
intgetnum()
}結果:
1020
改變之後
public
class dmo10
}class test
public
static test getinstance()
public
void
setnum(int num)
public
intgetnum()
}結果:
2020
餓漢模式:類載入的時候物件就已經存在,餓漢式是執行緒安全的,在類建立的同時就已經建立好乙個靜態的物件供系統使用,以後不再改變。
public
class single
public
static single getinstance()
}
懶漢模式:類載入的時候物件還不存在,就是所謂的延遲載入方式,需要時再進行建立,懶漢式如果在建立例項物件時不加上synchronized則會導致對物件的訪問不是執行緒安全的。
public
class single
public
static single getinstance()
return single;
}}
以上懶漢式單例的實現沒有考慮執行緒安全問題,它是執行緒不安全的,併發環境下很可能出現多個singleton例項,要實現執行緒安全,有以下三種方式,都是對getinstance這個方法改造,保證了懶漢式單例的執行緒安全,如果你第一次接觸單例模式,對執行緒安全不是很了解,可以先跳過下面這三小條,去看餓漢式單例,等看完後面再回頭考慮執行緒安全的問題:
1、在getinstance方法上加同步
public
static
synchronized single getinstance()
return single;
}
2、雙重檢查鎖定
public
static single getinstance()
}
}
return single;
}
3、靜態內部類
public
class single
private
single (){}
public
static final single getinstance()
}
這種比上面1、2都好一些,既實現了執行緒安全,又避免了同步帶來的效能影響。 Java中的設計模式(單例模式詳解)
方法三 列舉類實現單例 實質上屬於餓漢式單例 方法四 破壞單例的方法 設計模式通俗的將,就是程式設計中的一些套路,目的就是讓我們的 實現特定的目的,結構上也能更加優秀。虛擬機器中這個類只有乙個例項物件 通俗來講就是一開始就建立好這個例項物件 public class singleton 自己建立這個...
Java設計模式 設計模式之單例詳解
單例模式是一種常用的軟體設計模式。在它的核心結構中只包含乙個被稱為單例類的特殊類。通過單例模式可以保證應用中乙個單例類只有且只有乙個例項而且該例項易於外界訪問,從而方便對例項個數的控制並提供全域性訪問點。實現單例三要素 教科書中的示例是很簡單的,要想實現乙個單例類,只需要三點 1 定義私有的靜態成員...
Java設計模式詳解之單例模式
解決的問題 保證乙個類在記憶體中的物件唯一性。eg 多程式讀取乙個配置檔案時,建議配置檔案封裝成物件。會方便操作其中資料,又要保證多個程式讀到的是同乙個配置檔案物件,就需要該配置檔案物件在記憶體中是唯一的。不讓其他程式建立該類物件。在本類中建立乙個本類物件。對外提供方法,讓其他程式獲取這個物件。pu...