設計模式 單例模式

2021-09-24 19:42:56 字數 1151 閱讀 3795

單例模式是為了解決某些要確保物件的唯一性的問題存在的。

我舉乙個不恰當的例子,比如說許嵩這個人,這個物件。我先new出了乙個許嵩,讓他去唱歌去了。這個時候別人也new出了乙個許嵩,讓他旅遊去了。那麼現在許嵩的聽眾們想獲取許嵩最近的狀態,有的說許嵩在唱歌,有的說許嵩在旅遊我們還合影了。這就造成了不統一的現象,造成了混亂。為了避免這種混亂,有效的解決方法只有乙個,就是保證物件的唯一性!

許嵩,只能有乙個。這樣無論他是在做菜還是在寫歌還是在遛狗都是ok的,聽眾們在同一時間獲取到的許嵩的行跡都是統一的。在vae+發表的討論帖子也是和諧的。

我舉了乙個不是很恰當的例子,就是為了說明,在想要物件保持唯一性的時候,就要使用單例模式了。下面來看看**

例如,我寫了乙個類,叫single。我現在可以隨便的去new物件出來,例如:

package

com.company;

public

class

main

}class

single

我直接new了4個物件出來,我很方的。怎麼才能只讓別人new乙個物件出來,只使用乙個物件去訪問資源呢?可以這樣寫:

package

com.company;

public

class

main

}class

single

public

static

single getinstance()

return

m_instance;

}public

void

print()

}

其實,這就是單例模式了,由於我的建構函式是私有的,別人無論如何也不能去new物件了,只能乖乖的去呼叫getinstance方法去獲取我的物件,這樣就保證了我的物件的唯一性。

關於單例模式,有乙個餓漢式和懶漢式的區分,就是在於你是先載入物件,還是等你呼叫方法的時候再載入物件。如下圖所示:

我寫的例子是懶漢式的,這個其實無所謂,在實際開發的過程中,餓漢式其實用的比較多,因為單例模式你既然寫了肯定是要用的,直接new出物件就ok了,不要擔心什麼先new物件會不會占用記憶體啥的。

設計模式 單例模式

單例模式 singleton pattern 是乙個比較簡單的模式,其定義如下 ensure a class has only one instance,and provide a golbal point of acess to it.確保某乙個類只有乙個例項,而且自行例項化並且向整個系統提供這個...

設計模式 單例模式

class testsingleton static public function instance return self testsingleton private function clone public function setsinvar sinvar public function ...

設計模式 單例模式

單例模式的目的是保證類在系統中只被例項化一次,由該唯一的例項來為系統提供服務.單例模式主要用於保證服務的統一,比如獲取統一的編號服務,模仿oracle的序列生成等.但單例的使用需要謹慎,特別是在需要作負載均衡的地方,因為這種程式級的單例模式實際上只能保證在乙個應用中為單例.如果被多個應用載入,還是會...