行為驅動模型-Behave
阿新 • • 發佈:2020-08-05
一、什麼是設計模式?
設計模式是軟體開發人員在軟體開發過程中面臨的一般問題的解決方案。這些解決方案是眾多軟體開發人員經過相當長的一段時間的試驗和錯誤總結出來的。
(廢話一大堆,簡單來講就是“套路”)
二、單例設計模式(Singleton):這種模式涉及到一個單一的類,該類負責建立自己的物件,同時確保只有單個物件被建立。
(單例:單單一個例項,即類只允許存在一個物件例項)
三、怎麼做?
(1)、私有化構造器
(2)、內部建立類的物件,要求此物件也必須宣告為靜態的
(3)、提供公共的靜態方法,返回類的物件
①、懶漢式
/** * 懶漢式執行緒不安全寫法 */ class Order{//(1)、私有化構造器 private Order() { } //(2)、聲明當前類的物件,沒有初始化 private static Order instance=null; //(3)、提供公共的靜態方法,返回類的物件 public static Order getInstance() { if(instance==null) { instance=new Order(); } return instance; } } /** * 懶漢式執行緒安全的寫法 **/ class Customer{ //1.私有化構造器 private Customer() { } //2.聲明當前類的物件,沒有初始化 private static Customer instance=null; //3.提供公共的靜態方法,返回類的物件 //方法一、效率低(使用同步方法) // public static synchronized Customer getInstance() // { // // if(instance==null) // { // instance=new Customer();// } // return instance; // } //方法二、效率較高(使用同步程式碼塊) public static Customer getInstance() { /*沒有操作共享資料*/ if(instance==null) { synchronized (Customer.class) { /*在操作共享資料,if不可省略*/ if(instance==null) { instance=new Customer(); } } } return instance; } }
②、餓漢式
class Bank{ //1.私有化構造器 private Bank() { } //2.內部建立類的物件,要求此物件也必須宣告為靜態的 private static Bank instance=new Bank(); //3.提供公共的靜態方法,返回類的物件 public static Bank getInstance() { return instance; } }
比較:
懶漢式:
好處:延時物件的建立
壞處:需要提供執行緒安全的寫法
餓漢式:
好處:餓漢式是執行緒安全的
壞處:物件載入時間過程
一般使用懶漢式寫法,需要注意執行緒安全問題
四、單例設計模式應用場景:
* 1.網站的計數器
* 2.應用程式的日誌應用
* 3.資料庫連線池
* 4.專案中,讀取配置檔案的類
* 5.Application也是單例典型的應用
* 6.Windows的Task Manager(工作管理員)就是很典型的單例模式
* 7.Windows的Recycle Bin(回收站)也是典型的單例應用