設計模式Java實現(三)

門面模式(Facade Pattern)

由於客戶端需要調用多個系統才能完成一件業務操作,所以客戶端需要感知多個子系統,並依賴這些子系統。門面(Facade)的作用就是聚合這些子系統,由門面對外提供接口,客戶端只需要感知和依賴門面即可,無需再依賴其他子系統。

門面模式的設計和實現都很簡單,這裏可以下載門面模式的Java實現版本。

門面模式的UML類圖如下:



享元模式(Flyweight Pattern)

享元模式是對象結構模式,它以共享的方式高效的支持大量的細粒度對象。java.lang.String類就使用了享元模式,java.lang.String對象是不可變對象,一旦創建,將不會被修改,如果需要修改,那麼會返回另外一個對象。但在JVM內部,使用了一個共享變量池共享java.lang.String對象,即在JVM內部,java.lang.String對象是共享的。享元模式分爲單純享元模式和複合享元模式。在單純享元模式中,所有對象都是可以被共享的。複合享元模式即在單純享元模式內部又是有合成模式加以複合,形成複合享元對象。以下是Java版本的上述兩種模式實現的代碼下載

單純享元模式的UML類設計圖如下:


複合享元模式的UML類設計圖如下:



原型模式(Prototype Pattern)
原型模式是對象的創建模式,該模式能夠通過負責原型對象的方式,創建出更多同類型的對象。Java語言直接支持構建模式,java.lang.Object類裏面已經定義了clone()方法,通過該方法,可以copy出一個與當前對象一模一樣的新對象。需要使用該特性的對象,繼承標識接口Cloneable即可。涉及到clone方法,有太多的需要主要的地方,例如淺拷貝和深拷貝的問題,在本例的實現中,深拷貝是使用對象序列化的方式來實現的,而不是使用傳統的遞歸調用clone方法的方式。

原型模式的Java代碼實現可以在這裏下載

原型模式的UML類圖如下:



單例模式(Singleton Pattern)

單例模式是對象的構建模式,單例模式確保全局(整個JVM)只有一個該對象的實例。總體來說,單例模式的實現非常簡單,大致可以分爲餓漢式和懶漢式。但這兩種實現方式都有各種的問題,另外一種通過內部類持有對象實例的方式,將上述兩種實現的缺點都規避掉了。

單例模式的三種實現方式Java版本下載到這裏

餓漢式單例模式UML類圖:


懶漢式單例模式UML類圖:


內部類持有對象實例的方法UML類圖:



策略模式(Strategy Pattern)

策略模式是對象的行爲模式,它將一組不同的算法封裝在相同接口的後面,從而使它們可以互相的替換。策略模式可以使算法在不影響客戶端的情況下進行變化。

策略模式的代碼實現在這裏可以下載

策略模式的UML類設計圖:



模板方法模式(Template Method Pattern)

模板方法模式是對象的行爲模式,其定義了算法的流程,但將算法中某些步驟的具體實現較給子類來決定,不同的子類可以以不同的方式實現。

模板方法模式的代碼實現在這裏可以下載

模板方法模式的UML類設計圖:


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章