常用三大設計模式 單例,工廠和觀察者模式

2021-09-26 20:20:44 字數 1035 閱讀 4554

一、單例模式

二、工廠模式

三、觀察者模式

裝飾者模式

介面卡模式

**模式

設計模式不是高深技術,奇技淫巧,只是一種設計思想,針對不同的業務場景,最本質的目的是解耦,為了可擴充套件性和健壯性。

參考:關鍵點有4個:

1.私有建構函式

2.宣告靜態單例物件

3.構造單例之前要加鎖

4.需要2次檢查單例例項是否為空,分別在鎖之前和鎖之後

class singleton

}return m_singleton;

}

可能的問題:

1.為何要檢測2次?

有可能延遲或者快取原因,造成構造多個例項,違反了單例的初衷。

2.建構函式能否公有化

不,單例類的建構函式必須私有化,單例類不能被例項化,只能被靜態呼叫。

3.lock住的物件為什麼要是object物件,可以是int型嗎?

不行,鎖住的必須是個引用型別,如果鎖值型別,每個不同的執行緒在宣告的時候值型別變數的位址都不一樣,那麼上個執行緒鎖住的東西,下個執行緒進來會認為根本沒有鎖,相當於每次都鎖了不同的門。而引用型別的變數位址是相同的,每個執行緒進來判斷鎖都是判斷同乙個位址,相當於鎖在同一扇門,起到了鎖的作用。

參考:核心功能:根據「需求」生產「產品」

核心思想:解耦「需求」「工廠」和「產品」。

實際上根據業務情景不同分為不同的實現方式。一般分3種:簡單工廠、工廠、抽象工廠

1.簡單工廠

int prodno;

class

iproduct

iproduct getproduct()

}}//產品a

class

producta: iproduct

三。工廠模式和單例模式

設計模式 概念 所謂設計模式,就是一些解決問題的 常規做法 是一種認為較好的經驗總結。面對不同的問題,可能會有不同的解決辦法,此時就可以稱為不同的設計模式。1 工廠模式 在實際應用中,我們總是需要去例項化很多很多的類 以得到物件。則 我們可以設計出乙個 工廠 其實就是類 該工廠的作用 任務 就是為人...

設計模式 工廠模式和單例模式

在平常實用類的時候,往往要進行類功能的擴充套件,如果直接在裡面進行擴充套件,有可能會對類裡面的其他功能產生影響,所以在擴充套件功能的時候就要重新寫類,這就要採用繼承的方式,如 1 class yunsuan 2 8 9class jia extends yunsuan 造乙個加的子類繼承父類 10 ...

Java設計模式 單例模式 觀察者模式 工廠模式

概念 全域性只有乙個例項,自行例項化物件,自行向整個系統提供這個例項。應用場景 優點 缺點 餓漢式類載入的時候就開始載入,使用的是靜態變數,由jvm的classloader機制避免了執行緒安全問題,保證執行緒安全。缺點 一開始便載入占用記憶體,沒有達到懶載入效果,如果例項化是耗費資源的,則懶載入可以...