一、單例模式
二、工廠模式
三、觀察者模式
裝飾者模式
介面卡模式
**模式
設計模式不是高深技術,奇技淫巧,只是一種設計思想,針對不同的業務場景,最本質的目的是解耦,為了可擴充套件性和健壯性。
參考:關鍵點有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機制避免了執行緒安全問題,保證執行緒安全。缺點 一開始便載入占用記憶體,沒有達到懶載入效果,如果例項化是耗費資源的,則懶載入可以...