設計模式 單例 適配 外觀

2021-09-01 17:51:08 字數 1423 閱讀 6365

無論是工作,還是面試,大家都大談設計模式,貌似會設計模式就是很厲害的角色了,個人一直認為,設計模式只是一些實踐得到的寶貴經驗,是解決一些特定場景問題的解決方案。

單例,用的很多。

保證唯一例項,避免重複運算。

從hibernateutil得到sessionfactory,為dao源源不斷生成session例項,到初始化一些耗時重要的操作,儲存結果資訊。這裡的sessionfactory及結果資訊就是要儲存的,在系統執行時只允許計算或執行一次的操作,後續都是用這個例項,避免資源浪費。單例有餓漢(直接new 物件了)與懶漢式(需要時再建立)的。

程式上作的手腳有

1.私有化構造方法,不允許通過new的方式建立例項,從而達到控制例項的數量。

2.同步方法或者**塊,以避免**多次執行;

3.static,使外部程式可通過類名直接訪問方法取得這一單例。

《研磨設計模式》中指出了另一種方式,即通過內部類的方式建立:

因:內部類相當於類的成員,用static修飾後會僅且只在第一次時被初始化。這時就保證了唯一的例項,且jvm已經自己可以保證同步,不再需要synchronized控制了。

public class innerclasssingleton 

private innerclasssingleton()

public static innerclasssingleton getinstance()

}

介面卡

這也是乙個常用的模式,slf4j+slf4j-log4j+log4j,大致它 slf4j-log4j*.jar包中的幾個類就是adapter中的角色。介面卡,說白了,就是之前的**介面等放到現在已經不能符合要求,但是又不想完全拋棄它(畢竟它還是可以完成很多任務作的),這時就需要用另乙個類來封裝它,封裝後用新的介面(介面中包含新的方法)統一向外提供服務。slf4j  , c3p0 , jboss的日誌大致都是這麼幹的。

適配置器就是封裝舊方法,擴充套件新功能

public class adapter implements target 

public void method()

//………若干新方法

}

外觀模式

facade,英文的音不要讀錯了.

方便外部系統呼叫,打包方法(封裝內部)。

當乙個模組成熟後或者乙個向外提供服務的功能完成後,用乙個方法作為入口,外部系統或者其它子系統通過這個方法來呼叫後面n個子方法。這個便是外觀模式解決的問題。最多即是用來對外發布介面服務。

public class facade 

}

單例設計模式(餓漢單例設計模式 懶漢單例設計模式)

1.什麼是單例 單例的意思是乙個類永遠只存在乙個物件,不能建立多個物件。2.為什麼要用單例 開發中有很多的物件我們只需要乙個,例如虛擬機器物件,任務管理器物件 物件越多越佔記憶體,有時候只需要乙個物件就可以實現業務,單例可以節省記憶體空間。3.如何實現單例 單例的實現方式有 餓漢單例設計模式 通過類...

設計模式 介面卡與外觀模式

介面卡模式 將乙個類的介面,轉換成客戶期待的另乙個介面,介面卡讓原本介面不相容的類可以合作無間。外觀模式 提供了乙個統一的介面,用來訪問子系統中的一群介面。外觀定義了乙個高層介面,讓子系統更容易使用。外觀模式白話 開啟電視,你要插電源,再按下遙控的 開 鍵,同時為了你要由音量,也要把音量鍵 開 按一...

設計模式 單例設計模式

歷史 最早是建築學領域的模式,然後gof四人由其引申到編碼方面,總結了23種設計模式 設計模式 解決某一類事情最行之有效的方法 2.1 體現 餓漢式,保證物件的唯一性 class singleton 私有化建構函式禁止該類建立物件 private static singleton st new si...