java - thread - uml singleton




在實際應用中使用Singleton Pattern的確切位置是什麼? (8)

我只是好奇使用單身模式...我知道模式是如何工作的以及它可以在哪裡使用但我個人從未在任何實際應用中使用過。 有人可以給出一個可以使用它的例子。如果有人可以解釋它們在實際應用中的使用方式和位置,我真的很感激。 謝謝,斯瓦蒂


Singleton Pattern可用於加載配置,比如在Web應用程序中,我們應該生成一個文件,該文件將存儲在服務器的某個位置。 現在,該位置可以使用單例類從配置文件(屬性文件)中獲取。因為該位置是唯一的,並且將來可能會經常更改,所以我們使用配置文件,以便可以在不部署應用程序的情況下進行修改,以便通過應用程序反映變化和位置將是全球性和獨特的


Singleton是一個很好的設計模式。 在決定模式之前,首先要對問題和解決方案進行深入分析。 如果在您的解決方案中某個對像只有一個實例,並且您希望在設計中對其進行建模,那麼您應該使用單例模式。 例如,如果您在軟件中對PC進行建模,則只有一個PC實例與您正在運行的程序相關。 正如Jon Skeet所說,java.lang.Runtime被建模為單例,因為對於在java運行時內加載和運行的所有java對象,只有一個運行時實例。

很多時候它被用於錯誤的原因。 永遠不要創建一個單例,以便您可以從任何地方輕鬆訪問該對象(如Object :: instance()),而無需傳遞對象。 這是我遇到的最糟糕的用途。


使用Logger時,可以使用Singleton模式作為Logger類。 如果它不是Singleton,每個客戶端都有自己的Logger對象,並且在Multithreaded環境中將在Logger實例上進行並發訪問,並且多個客戶端將同時創建/寫入Log文件,這會導致數據損壞。


例如,運行具有一個許可證和一個數據庫連接的軟件的試用版本,其在真實單詞中使用單一模式。 可能是大師jon雙向飛碟可以提供這樣的例子。


我在在線足球隊商店系統中使用了單身模式。 我們將單例模式應用於ShoppingCart類。

每個應用程序實例只需要一個購物車實例。 所以單身人士似乎最適合這種情況。


我在我的Android應用程序中使用了一個媒體播放器,因此我擴展了mediaplayer類,並使用了單例模式,因為我只需要一個實例,並且能夠在我的應用程序的任何其他部分調用相同的實例來檢查是否正在播放,或當前播放的文件。

希望它能幫助你,尊重!!!!


當您必須僅允許類的單個實例化時,基本上使用Singleton類。 以現實世界為例,在OOP設計庫的情況下,我們可以創建庫類作為單例類。


考慮以Singleton Pattern設計的AudioDriverService的情況。 因此我們只允許創建一個AudioDriverService類的實例。 實際上,您的Windows Media Player或Youtube播放器都將共享AudioDriverService的相同對象,而不是創建新實例。







singleton