例項
/**
* 單例模式
* 應用場合:有些物件只需要有乙個就足夠了
* 作用:保證整個應用程式中某個例項有且只有乙個
* 型別:餓漢與懶漢
* */
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的序列生成等.但單例的使用需要謹慎,特別是在需要作負載均衡的地方,因為這種程式級的單例模式實際上只能保證在乙個應用中為單例.如果被多個應用載入,還是會...