1.單例模式
每個類只能創(chuàng)建一個實例對象
Java?Singleton模式主要作用是保證在Java應(yīng)用程序中,一個類Class只有一個實例存在。?使用Singleton的好處還在于可以節(jié)省內(nèi)存,因為它限制了實例的個數(shù),有利于Java垃圾回收(garbage?collection)。
好處:
第一、控制資源的使用,通過線程同步來控制資源的并發(fā)訪問;
第二、控制實例產(chǎn)生的數(shù)量,達(dá)到節(jié)約資源的目的。
第三、作為通信媒介使用,也就是數(shù)據(jù)共享,它可以在不建立直接關(guān)聯(lián)的條件下,讓多個不相關(guān)的兩個線程或者進(jìn)程之間實現(xiàn)通信。
應(yīng)用場景:在線統(tǒng)計人數(shù)



synchronized 關(guān)鍵字,代表這個方法加鎖,
相當(dāng)于不管哪一個線程A每次運行到這個方法時,
都要檢查有沒有其它正在用這個方法的線程B(或者C D等),
有的話要等正在使用這個方法的線程B(或者C D)運行完這個方法后再運行此線程A,
沒有的話,直接運行它包括兩種用法:synchronized 方法和 synchronized 塊。
2.工廠模式
優(yōu)點:
將創(chuàng)建實例的工作與使用實例的工作分開,使用者不必關(guān)心類對象如何創(chuàng)建,明確了職責(zé)。
把初始化實例時的工作放到工廠里進(jìn)行,使代碼更容易維護(hù)。 更符合面向?qū)ο蟮脑瓌t,面向接口編程,而不是面向?qū)崿F(xiàn)編程。
缺點:
由于工廠類集中了所有產(chǎn)品創(chuàng)建邏輯,一旦不能正常工作,整個系統(tǒng)都要受到影響。
要新增產(chǎn)品類的時候,就要修改工廠類的代碼,違反了開放封閉原則(對擴(kuò)展的開放,對修改的關(guān)閉)。
簡單工廠模式由于使用了靜態(tài)工廠方法,靜態(tài)方法不能被繼承和重寫,會造成工廠角色無法形成基于繼承的等級結(jié)構(gòu)。





3觀察者模式
簡單地說,觀察者模式定義了一個一對多的依賴關(guān)系,讓一個或多個觀察者對象監(jiān)聽一個主題對象。這樣一來,當(dāng)被觀察者狀態(tài)發(fā)生改變時,需要通知相應(yīng)的觀察者,使這些觀察者對象能夠自動更新。例如:GUI中的事件處理機(jī)制采用的就是觀察者模式。




