1. 程式人生 > >java23種設計模式-前五種型模式詳解

java23種設計模式-前五種型模式詳解

走穿23種設計模式-前五種,建立型模式詳解

總體來說設計模式分為三大類(23種):

建立型模式,共五種:

單例模式、工廠方法模式、抽象工廠模式、建造者模式、原型模式。

結構型模式,共七種。

介面卡模式、裝飾器模式、代理模式、外觀模式、橋接模式、組合模式、享元模式。

行為型模式,共十一種。

策略模式、模板方法模式、觀察者模式、迭代子模式、責任鏈模式、命令模式、備忘錄模式、狀態模式、訪問者模式、中介者模式、直譯器模式。

其實還有兩類特殊的模式:併發型模式和執行緒池模式。

很多人只知道一兩種設計模式,單例模式和工廠模式,而且有很多人不知道工廠模式還有分類:工廠方法模式和抽象工廠模式。本文帶你完全的學習一下這建立型別的五種模式,並進行詳細總結,看完這篇文章,你都可以說你已經深入瞭解過5種設計模式以上了。

建立型的五種設計模式(Pattern)概念

單例模式(Singleton)

單例模式中一個類只有一個例項,而且這個類例項化一次後並向整個系統提供這個例項物件。 
單利模式減少記憶體開支,避免對資源的多重佔用,優化並共享資源訪問,當單利模式擴充套件難,不易測試。

工廠方法模式(Factory Method)

工廠方法模式定義一個建立產品物件的工廠介面,將實際建立工作推遲到子類中。

抽象工廠模式(Abstract Factory)

工廠方法模式的升級,它為建立一組相關或相互依賴的物件提供一個介面,而且無需指定它們的具體類。

建造者模式(Builder)

也叫生成器模式,將一個複製物件的構建與其表示分類,使得同樣的構建過程可以建立不同的表示。

原型模式(Prototype)

用原型模式指定建立物件的種類,並通過拷貝這些原型建立新的物件。

上面就是建立型設計模式的幾個概念,你要了解這幾個設計模式,你必須是要熟記並理解這幾個概念。

沒錯就是背誦下來這幾個模式的概念,很多時候別人問你設計模式,如果不探討太多,你把設計模式的概念說給他知道,再進行一些簡單的分析,這已經夠了。

建立型的五種設計模式的類圖

1.單例模式了類圖

1

2.工廠方法模式了類圖

2

3.抽象工廠模式了類圖

3

4.建造者模式了類圖

4

5.原型模式了類圖

5

建立型的五種設計模式分析

單例模式

單例模式就是例項化一次後,這個類的物件以後都不需要例項化,並且可以全域性使用。 
單例模式有兩種實現:餓漢式單例模式和懶漢式單例模式。 
餓漢式單例模式就是:把例項化在類的成員變數構建的時候就去例項化,這樣在任何時候呼叫這個類的物件都是建立好的,隨時可以獲取到的,因為餓,所有要馬上獲取到。。。 
懶漢式單例模式就是:當這個類物件第一次呼叫的時候才進行例項化,快要用的時候才去搞,這就比較懶了! 
這裡懶漢式單例模式還可能存線上程問題,也就是多個地方同時要呼叫這個單例物件,會出現多個例項化的物件,所有要把例項化的語句加個同步鎖。 
單例模式還有一個登記式單例模式,但是基本沒人用,主要的程式碼太麻煩了,不好理解。

單例模式在Android大程式設計中基本都是用到的,繼承了Application的類,就是程式剛開始的時候建立的類,可以存取一些全域性的屬性。

工廠方法模式

結合工廠方法模式的概念和類圖,你看到子類實現父類的方法,然後呼叫父類的方法來實現具體操作,這就是工廠方法。 
其實就是java繼承和多型的具體表現!

抽象工廠模式

抽象工廠模式的定義:為建立一組相關或相互依賴的物件提供一個介面,而且無需指定它們的具體類。 
同時你也可以對比一下工廠方法模式的定義:為某個物件提供一個介面,而且無需指定它們的具體類。 
都是子類實現介面的方法,並在子類寫具體的程式碼。這裡抽象工廠的介面類是能建立多個相關的物件,而工廠方法的介面類是隻建立一個物件。 
如果抽象工廠模式的抽象工廠介面類只建立一個物件,那麼它就是工廠方法模式。 
當一個物件都有相同的約束時,可以使用抽象工廠模式。 
打個比方說,這個工廠的幾個產品都需要經過某些共同的步驟和打上相同的商標,這一組產品可以在一個工廠裡面生產,減少很多重複的程式碼在不同的地方都出現多次。 
當然你把這幾個產品分到幾個工廠去生產也是可以的,就是會造成一個資源重複建造。

建造者模式

將一個複雜物件的構建與它的表示分離,使得同樣的構建過程可以建立不同的表示。 
這裡給大家分析一下: 
定義的前半句說,構造與表示分離,其實就是繼承(或實現)。 
兩種工廠模式也都是為某個物件提供一個介面,而且無需指定它們的具體類。 
所以建造者模式的重點是後半句:同樣的構建過程可以建立不同的結果。 
建造者模式其實和工廠方法模式有很多的類似的地方,這個要看程式碼的實現做比較。

原型模式

用原型例項指定建立物件的種類,並且通過複製這些原型建立新的物件。 
java中內建了克隆機制。Object類具有一個clone()方法,能夠實現物件的克隆。

使一個類支援克隆只需要兩步。

1.實現介面Cloneable類

2.覆蓋Object的clone()方法,完成物件的克隆操作,通常只需要呼叫Object的clone()方法即可。

上面就是設計模式中的五種建立型的模式,其實重點還是要理解概念,並會做一點解釋就可以了。

如果要深入理解一些,可以看我之前寫的介紹,都有實際例項和程式碼解釋java設計模式中的五種建立型模式:

共勉:你想做的事,一定要做到。只要你建立起一種“一心一意”的態度,並且全面發揮自己的能力,你就能夠成就一番偉業。