1.設計模式:23種設計模式。對問題行之有效的解決方式。其實它是一種思想。
2.單例設計模式:就是可以保證乙個類在記憶體中的物件唯一性。
解決辦法:
步驟:
1)私有化該類的建構函式。
2)通過new在本類中建立乙個本類物件
3)定義乙個公有的方法,將建立的物件返回。
**例子:
1.餓漢式:一上來就吃
/*
設計模式:23種設計模式。對問題行之有效的解決方式。其實它是一種思想。
1.單例設計模式。
解決的問題:就是可以保證乙個類在記憶體中的物件唯一性。
比如說對於多個程式使用同乙個配置資訊物件時,就需要保證該物件的唯一性。
如何保證物件的唯一性?
1)不允許其他程式用new建立該類物件。
2)在該類中建立乙個本類例項。
3)對外提供乙個方法讓其他程式可以獲取該物件。
步驟:1)私有化該類的建構函式。
2)通過new在本類中建立乙個本類物件
3)定義乙個公有的方法,將建立的物件返回。
*/class single //類一載入,物件就已經存在了
; private
static single s = new single(); //成員變數一般不暴露出去
public
static single getinstance() //這個方法存在是賦予物件的可控性
}class singledemo
}class test
; private
static test t = new test();
public
static test getinstance()
public
void
setnum(int num)
public
intgetnum()
}
3.單例設計模式記憶體分析:
4.另一種表現模式:延遲載入形式,面試這個問得比較多。(懶漢式:用的時候再做)
class single2 //類載入進來,沒有物件,只有呼叫了getinstance方法時,才會建立物件。
//稱為延遲載入形式
; private
static single2 s = null;
private
static single2 getinstance()
}
5.注意:
面試時,問懶漢式比較多,知識點較多。
開發時,用餓漢式:
1.因為單例這個類就是要用物件,所以先載入後載入沒區別。
2.懶漢式存在問題:如果被多執行緒併發訪問時,可能保證不了物件的唯一性,有安全隱患。想保證要改,改了之後效率也降低了。
(25)C 設計模式 單例模式
從 單例 的字面意思上理解為 乙個類只有乙個例項。所以單例模式也就是保證乙個類只有乙個例項的一種實現方法。官方給出的定義 確保乙個類只有乙個例項,並提供乙個全域性訪問點。單例模式的實現 很簡單,也很容易看懂,但每次使用都會想為什們前人會這樣實現單例模式呢?他們如何思考的呢?我們從單例模式的概念入手,...
設計模式 單例設計模式
歷史 最早是建築學領域的模式,然後gof四人由其引申到編碼方面,總結了23種設計模式 設計模式 解決某一類事情最行之有效的方法 2.1 體現 餓漢式,保證物件的唯一性 class singleton 私有化建構函式禁止該類建立物件 private static singleton st new si...
設計模式 單例設計模式
單例模式,是一種常用的軟體設計模式。在它的核心結構中只包含乙個被稱為單例的特殊類。通過單例模式可以保證系統中乙個類只有乙個例項。即乙個類只有乙個物件例項 單例模式的要點有三個 一是某個類只能有乙個例項 二是它必須自行建立這個例項 三是它必須自行向整個系統提供這個例項。單例設計模式 解決的問題 可以保...