設計模式 單例模式

2022-08-01 07:00:14 字數 1111 閱讀 5225

最近系統的看了下設計模式,對於單例又有一些新的理解:

1.單例和靜態變數有什麼優缺點:

2.單例的各種方式:

(1).最簡單的模式(不考慮多執行緒)

public class singleton  // 不允許外界呼叫建構函式

public static singleton getinstance ()

return uniqueinstance;

}// 其他方法

}

(2).考慮多執行緒,避免創造出兩個物件,把getinstance方法設定成同步方法

public class singleton  // 不允許外界呼叫建構函式

public static synchronized singleton getinstance ()

return uniqueinstance;

}// 其他方法

}

這種方法有個問題:就是同步會降低效能,如果專案會頻繁的呼叫getinstance方法,而又十分的在意效能,那麼這樣不是乙個好方法,如果不是這樣,那麼這樣就可以滿足要求。

(3).對於多執行緒的改善:

a:使用「急切」建立例項,而不用延遲例項化的做法,適用於建立的物件並不是十分耗記憶體,即時很晚才用到或者壓根不用,完全不care。

public class singleton 

public static singleton getinstance ()

}

b:利用「雙重檢查加鎖」,在getinstance()中減少使用同步

public class singleton 

public static singleton getinstance () }}

return uniqueinstance;

}}

*考慮如果實現ios的「雙重檢查加鎖」。

3.其實可以說單例模式違反了「單一職責」的設計原則,因為不只要維護自己先關的功能,還要管理自己的例項化,但是這樣可以讓整體設計更簡單,所以還是那句話,設計原則只不過是要盡量的遵守,不是一定要百分之百不能違背。各種設計模式,都可以思考下,遵守了哪些設計原則,違反了哪些設計原則。

設計模式 單例模式

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