設計模式初探之三 單例模式與多執行緒

2021-08-02 10:53:32 字數 1690 閱讀 1953

單例模式:保證系統中乙個類只有乙個例項。即乙個類只有乙個物件例項

如何實現:

一是單例模式的類只提供私有的建構函式,

二是類定義中含有乙個該類的靜態私有物件,

三是該類提供了乙個靜態的公有的函式用於建立或獲取它本身的靜態私有物件。

以下是具體示例:

1、假設有乙個企業名為headfirstpizzaenterprise,因為整個程式中只允許有乙個headfirstpizzaenterprise的物件,所以應用單例模式。

/*

* headfirstpizza企業

* 旗下有很多pizza店

* 使用觀察者模式、單例模式

*/public class headfirstpizzaenterprise extends enterprise

//三:該類提供了乙個靜態的公有的函式用於建立或獲取它本身的靜態私有物件

public static headfirstpizzaenterprise getinstance()

return headfirstpizzaenterprise;

} //根據區域搜尋公司旗下的披薩店

public pizzastore getstore(string location) else

return pizzastore;

}}

2、寫個測試類實驗一下
/*

* 實現runna介面,模擬多執行緒排程

*/public class useheadfirstpizzaenterprise implements runnable

}

/*

* 建立多個程序來獲取單例

*/public class singletonpatterntest

}}

3、執行結果如下,因為多執行緒沒有做同步處理,導致存在建立多個物件的場景。

4、加入同步機制

單例模式在使用過程中有多種方法來實現同步機制,上述方法只是其中一種。

/*

* headfirstpizza企業

* 旗下有很多pizza店

* 使用觀察者模式、單例模式

*/public class headfirstpizzaenterprise extends enterprise

//三:該類提供了乙個靜態的公有的函式用於建立或獲取它本身的靜態私有物件

public static headfirstpizzaenterprise getinstance()

}} return headfirstpizzaenterprise;

} //根據區域搜尋公司旗下的披薩店

public pizzastore getstore(string location) else

return pizzastore;

}}

5、再次測試,發現只呼叫了一次類建構函式,也就是說只建立了乙個物件

ps:單例模式在使用過程中有多種方法來實現同步機制,上述方法只是其中一種。

設計模式筆記之三 單例模式

單例模式 單例模式可以說是最簡單的設計模式了,當我們需要保持狀態一致,或者是縮減資源開銷的時候我們都會用到單例模式。就如我們的實驗室有三個老總,以前富裕的時候每個老總都有乙個女秘書 class nvmishu public class singleton 但是最近市場不景氣,我們的人 衣服套件不好賣...

設計模式初探 單例模式

所謂的單例模式就是指的乙個類只提供乙個物件例項,而且所提供的例項只有乙個訪問的入口 方法 常見的應用場景 常見的有五種實現方式 所謂的餓漢式就是,讓單例物件在類建立時就被載入,像乙個餓漢。package cn.liu.single 餓漢式單例模式 author administrator publi...

初探設計模式 單例模式

單例模式是我們經常使用的一種設計模式,那麼讓我們自己來設計一種單例模式的話,我們該如何設計呢?設計的方式有很多種,我們依次來看一下 首先是第一種 1 2 簡單的方式 在併發執行的時候可能存在多個例項3 4 author cuibin 5 create 2017 08 30 20 386 7publi...