設計模式 單例模式

2021-07-10 07:25:10 字數 1076 閱讀 2539

# 單例模式

#單例模式-->從始至終 只產生乙個示例

#** public class single

public single getinstance()

return instance;}}

# static 修飾變數表示是靜態變數

被 static修飾 表示是靜態變數  沒有表示是例項變數  二者的區別 在於  靜態變數 在 載入類的時候就會分配記憶體   可以用類名直接訪問  例項變數 會在類例項化的時候  進行記憶體分配 會在記憶體中有多個備份  互不影響  靜態變數 只會在記憶體中有乙個

例項變數 只有在用的時候 才會例項化  但是靜態變數 只要載入類  就會例項化 但是只會有乙個

要點  1 。 靜態全域性變數 instance

2. 構造方法 私有化  private  這樣 非子類都不能訪問 

3. public 的getinstance方法 來例項化物件

# 如果多個執行緒  同時訪問  有可能例項化多個物件出來 

比如  執行緒一 執行到 if判斷的時候  sleep一秒鐘  執行緒二 執行過來if  這是  例項已經被建立了  但是  執行緒一 仍然 任務 instance 是null  於是又建立了新 的乙個

#解決辦法 使用 synchronize 同步**塊  當 執行緒一 執行該部分**時  執行緒二 會等待他 執行結束 在執行 該部分**

**************************完美解決方式*********************************

*//**

* 使用靜態內部類來實現     靜態內部類只能訪問外部類的靜態成員 靜態內部類不能new

* @author arthas**/

public class single

// 2 乙個公共的靜態內部類 裡面只有乙個靜態的最終類 例項物件 instance

public static class singleton1   

//乙個公共的構造方法 得到instance例項 靜態變數可以通過 類名點點的方式直接獲取

public static single getinstance()

}

設計模式 單例模式

單例模式 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的序列生成等.但單例的使用需要謹慎,特別是在需要作負載均衡的地方,因為這種程式級的單例模式實際上只能保證在乙個應用中為單例.如果被多個應用載入,還是會...