設計模式 單例模式

2022-05-06 22:36:11 字數 1857 閱讀 1717

例項

/**

* 單例模式

* 應用場合:有些物件只需要有乙個就足夠了

* 作用:保證整個應用程式中某個例項有且只有乙個

* 型別:餓漢與懶漢

* */

public class singleton

/*** 2.建立類的例項是唯一的,使用private static 修飾

* 將類例項定義成static靜態可以讓外部類通過singleton s1=singleton.instance;這種方式呼叫

* */

static singleton instance=new singleton();

}

public class test else

}}

結果

s1與s2是同乙個例項

另乙個情況:將成員變數改為private時,外部就無法通過那個singleton.instance方式呼叫,解決方法(通過封裝的方式調整一下**)

private static singleton instance=new singleton();

/*** 4.提供乙個獲取例項的方法,使用public static 修飾

* */

public static singleton getinstance()

提供了獲取例項的方法就可以通過singleton.getinstance(),來獲取到

singleton s1=singleton.getinstance();

singleton s2=singleton.getinstance();

結果

s1與s2是同乙個例項

private static singleton instance=new singleton();

這段**什麼時候載入呢:static的靜態的成員屬於類所有,當類載入的時候它就會去執行,所以當singleton這個類載入的時候,它就會去建立乙個類的例項,不管使用者是否會去呼叫或者獲取這個例項,它都已經載入了--稱為餓漢

/**

* 懶漢模式

* */

public class singleton2

/*** 2.宣告類的唯一例項,使用private static修飾

* 當類載入的時候,並沒有執行,只有在獲取的時候再去判斷,為空時才去建立例項,

* 當第二次,第三次再次獲取的時候因為已經建立過了就不會再去建立--懶漢模式

* */

private static singleton2 instance;

/*** 3.提供乙個用於獲取例項的方法,使用public static修飾

* */

public static singleton2 getinstance()

return instance; }}

/**

* 懶漢模式

* */

singleton s3=singleton.getinstance();

singleton s4=singleton.getinstance();

if(s3==s4)else

}

區別

餓漢模式的特點是載入類時比較慢,但執行時獲取物件的速度比較快,執行緒安全的;懶漢模式特點在載入類時比較快,但執行時獲取物件的速度比較慢,執行緒不安全的

設計模式 單例模式

單例模式 singleton pattern 是乙個比較簡單的模式,其定義如下 ensure a class has only one instance,and provide a golbal point of acess to it.確保某乙個類只有乙個例項,而且自行例項化並且向整個系統提供這個...

設計模式 單例模式

class testsingleton static public function instance return self testsingleton private function clone public function setsinvar sinvar public function ...

設計模式 單例模式

單例模式的目的是保證類在系統中只被例項化一次,由該唯一的例項來為系統提供服務.單例模式主要用於保證服務的統一,比如獲取統一的編號服務,模仿oracle的序列生成等.但單例的使用需要謹慎,特別是在需要作負載均衡的地方,因為這種程式級的單例模式實際上只能保證在乙個應用中為單例.如果被多個應用載入,還是會...