//單例模式public class Singleton { PRivate static Singleton s; private Singleton(){ } public static Singleton getSingleton(){ if(s ==null){ s=new Singleton(); } return s; } //測試 public static void main(String[] args){ Singleton s=Singleton.getSingleton(); Singleton s2=Singleton.getSingleton(); System.out.println(s==s2); }}
(至于單例模式的優缺點我就直接copy啦?。?/p>
單例模式作為一種目標明確、結構簡單、理解容易的設計模式,在軟件開發中使用頻率相當高,在很多應用軟件和框架中都得以廣泛應用。
1.主要優點
單例模式的主要優點如下:
(1) 單例模式提供了對唯一實例的受控訪問。因為單例類封裝了它的唯一實例,所以它可以嚴格控制客戶怎樣以及何時訪問它。
(2) 由于在系統內存中只存在一個對象,因此可以節約系統資源,對于一些需要頻繁創建和銷毀的對象單例模式無疑可以提高系統的性能。
(3) 允許可變數目的實例?;趩卫J轿覀兛梢赃M行擴展,使用與單例控制相似的方法來獲得指定個數的對象實例,既節省系統資源,又解決了單例單例對象共享過多有損性能的問題。
2.主要缺點
單例模式的主要缺點如下:
(1) 由于單例模式中沒有抽象層,因此單例類的擴展有很大的困難。
(2) 單例類的職責過重,在一定程度上違背了“單一職責原則”。因為單例類既充當了工廠角色,提供了工廠方法,同時又充當了產品角色,包含一些業務方法,將產品的創建和產品的本身的功能融合到一起。
(3) 現在很多面向對象語言(如Java、C#)的運行環境都提供了自動垃圾回收的技術,因此,如果實例化的共享對象長時間不被利用,系統會認為它是垃圾,會自動銷毀并回收資源,下次利用時又將重新實例化,這將導致共享的單例對象狀態的丟失。
3.適用場景
在以下情況下可以考慮使用單例模式:
(1) 系統只需要一個實例對象,如系統要求提供一個唯一的序列號生成器或資源管理器,或者需要考慮資源消耗太大而只允許創建一個對象。
(2) 客戶調用類的單個實例只允許使用一個公共訪問點,除了該公共訪問點,不能通過其他途徑訪問該實例。
新聞熱點
疑難解答