麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學院 > 開發設計 > 正文

設計模式之單例模式(Singleton)

2019-11-14 08:43:29
字體:
來源:轉載
供稿:網友

From:http://mp.weixin.QQ.com/s/RUUBn_VBmkPE8oE20IBleg 單例模式(Singleton Pattern):

1.定義: 確保某一個類只有一個實例,而且自動實例化并向整個系統提供這個實例

2.優點: 1、在內存中只有一個實例,所以減少了內存開銷,特別是在一個對象需要頻繁地創建、銷毀時,而且創建或銷毀時性能又無法優化。單例模式的優勢非常明顯; 2、避免對資源的多重占用。例如寫文件動作,由于只有個實例存在內存中,避免對同一個資源文件的同時寫操作 3、提供了對唯一實例的受控訪問。 4、允許可變數目的實例。

3.缺點: 1、沒有接口,擴展困難。 2、不適用于變化的對象,如果同一類型的對象總是要在不同的用例場景發生變化,單例就會引起數據的錯誤,不能保存彼此的狀態。 3、濫用單例將帶來一些負面問題,如為了節省資源將數據庫連接池對象設計為的單例類,可能會導致共享連接池對象的程序過多而出現連接池溢出;如果實例化的對象長時間不被利用,系統會認為是垃圾而被回收,這將導致對象狀態的丟失。 4、單例類的職責過重,在一定程度上違背了“單一職責原則”。

4.適用場景: 1、資源共享的情況下,避免由于資源操作時導致的性能或損耗等。如上述中的日志文件,應用配置。 2、控制資源的情況下,方便資源之間的互相通信。如線程池等。 3、需要定義大量的靜態常量和靜態方法(如工具類)的環境,可以采用單例模式

5.UML圖 這里寫圖片描述

6.單例模式的幾種書寫方式:

1/ 餓漢式單例:單例實例在類裝載時就構建 特點:線程安全 在類加載的同時已經創建好一個靜態對象,調用時反應速度快

public class SingleTonPattern(){ PRivate static SingletonPattern singleton=new SingletonPattern(); private SingletonPattern(){} //通過該方法獲取實例 public static SingletonPattern GetSingleton() { return singleton; }}

2/ 懶漢式單例:單例實例在第一次被使用時構建,延遲初始化 特點: 避免了餓漢式的那種在沒有用到的情況下創建事例,資源利用率高,不執行getInstance()就不會被實例,可以執行該類的其他靜態方法。但是多個線程判斷instance都為null時,在執行new操作時多線程會出現重復情況

public class SingletonPattern(){ private static SingletonPattern singleton=null; private SingletonPattern(){} //通過該方法獲得實例對象 public static SingletonPattern GetSingleton() { if(singleton==null) { //多個線程判斷instance都為null時,在執行new操作時多線程會出現重復情況 singleton=new SingletonPattern(); } return singleton; }}

3/ 雙重檢測單例: 特點: 資源利用率高,不執行getInstance()就不被實例,可以執行該類其他靜態方法 但是第一次加載時反應不快

public class SingletonPattern(){ private static SingletonPattern singleton=null; private SingletonPattern(){} //通過該方法獲得實例對象 public static SingletonPattern GetSingleton() { if(singleton==null) { //使用synchronized關鍵字,防止多個線程判斷instance都為null時,在執行new操作時多線程會出現重復情況 synchronized(SingletonPattern.class) { if(instance==null) { instance=new SingletonPattern(); } } } return singleton; }}

4/ 靜態內部類模式:

public class SingletonPattern(){ private SingletonPattern(){} //通過該方法獲得實例對象 public static class SingletonHelp() { static SingletonPattern singleton=new SingletonPattern(); } //通過該方法獲得實例對象 public static SingletonPattern GetSingleton() { return singleton; }}
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: xnxx 日本19 | 狠狠干夜夜操 | 亚洲日韩中文字幕一区 | 男女羞羞视频在线观看免费 | 成人一区视频 | 欧美日韩经典在线 | 亚洲啊v在线观看 | 久久靖品 | 国产一级淫片免费看 | 色av综合在线 | 亚洲国产精品500在线观看 | 天天操天天骑 | 亚洲资源在线 | 免费一级a毛片在线播放视 日日草夜夜操 | 99ri精品| 欧美毛片 | 亚洲视频在线网 | 日本在线看片 | 成年免费视频黄网站在线观看 | 日本一区二区三区视频在线 | 欧美精品久久久久久久久久 | 免费a级毛片永久免费 | 免费嗨片首页中文字幕 | 国产精品久久久免费观看 | 久久人人av | 黄色网址免费在线播放 | 国产羞羞视频在线观看 | 插插操 | 狠狠操电影 | 亚洲精品7777xxxx青睐 | 午夜精品小视频 | 国产自在自线午夜精品视频在 | av在线中文 | av在线免费播放 | 欧美成人免费一区二区三区 | 91国内精品久久久久免费影院 | 少妇的肉体的满足毛片 | 噜噜在线视频 | 叉逼视频 | 99热1| 亚洲一级电影在线观看 |