天天看點

走穿23種設計模式-前五種,建立型模式詳解走穿23種設計模式-前五種,建立型模式詳解共勉:你想做的事,一定要做到。隻要你建立起一種“一心一意”的态度,并且全面發揮自己的能力,你就能夠成就一番偉業。

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

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

建立型模式,共五種:

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

結構型模式,共七種。

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

行為型模式,共十一種。

政策模式、模闆方法模式、觀察者模式、疊代子模式、責任鍊模式、指令模式、備忘錄模式、狀态模式、通路者模式、中介者模式、解釋器模式。

其實還有兩類特殊的模式:并發型模式和線程池模式。

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

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

單例模式(Singleton)

單例模式中一個類隻有一個執行個體,而且這個類執行個體化一次後并向整個系統提供這個執行個體對象。

單利模式減少記憶體開支,避免對資源的多重占用,優化并共享資源通路,當單利模式擴充難,不易測試。

工廠方法模式(Factory Method)

工廠方法模式定義一個建立産品對象的工廠接口,将實際建立工作推遲到子類中。

抽象工廠模式(Abstract Factory)

工廠方法模式的更新,它為建立一組相關或互相依賴的對象提供一個接口,而且無需指定它們的具體類。

建造者模式(Builder)

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

原型模式(Prototype)

用原型模式指定建立對象的種類,并通過拷貝這些原型建立新的對象。

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

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

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

1.單例模式了類圖

走穿23種設計模式-前五種,建立型模式詳解走穿23種設計模式-前五種,建立型模式詳解共勉:你想做的事,一定要做到。隻要你建立起一種“一心一意”的态度,并且全面發揮自己的能力,你就能夠成就一番偉業。

2.工廠方法模式了類圖

走穿23種設計模式-前五種,建立型模式詳解走穿23種設計模式-前五種,建立型模式詳解共勉:你想做的事,一定要做到。隻要你建立起一種“一心一意”的态度,并且全面發揮自己的能力,你就能夠成就一番偉業。

3.抽象工廠模式了類圖

走穿23種設計模式-前五種,建立型模式詳解走穿23種設計模式-前五種,建立型模式詳解共勉:你想做的事,一定要做到。隻要你建立起一種“一心一意”的态度,并且全面發揮自己的能力,你就能夠成就一番偉業。

4.建造者模式了類圖

走穿23種設計模式-前五種,建立型模式詳解走穿23種設計模式-前五種,建立型模式詳解共勉:你想做的事,一定要做到。隻要你建立起一種“一心一意”的态度,并且全面發揮自己的能力,你就能夠成就一番偉業。

5.原型模式了類圖

走穿23種設計模式-前五種,建立型模式詳解走穿23種設計模式-前五種,建立型模式詳解共勉:你想做的事,一定要做到。隻要你建立起一種“一心一意”的态度,并且全面發揮自己的能力,你就能夠成就一番偉業。

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

單例模式

單例模式就是執行個體化一次後,這個類的對象以後都不需要執行個體化,并且可以全局使用。

單例模式有兩種實作:餓漢式單例模式和懶漢式單例模式。

餓漢式單例模式就是:把執行個體化在類的成員變量建構的時候就去執行個體化,這樣在任何時候調用這個類的對象都是建立好的,随時可以擷取到的,因為餓,所有要馬上擷取到。。。

懶漢式單例模式就是:當這個類對象第一次調用的時候才進行執行個體化,快要用的時候才去搞,這就比較懶了!

這裡懶漢式單例模式還可能存線上程問題,也就是多個地方同時要調用這個單例對象,會出現多個執行個體化的對象,所有要把執行個體化的語句加個同步鎖。

單例模式還有一個登記式單例模式,但是基本沒人用,主要的代碼太麻煩了,不好了解。

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

工廠方法模式

結合工廠方法模式的概念和類圖,你看到子類實作父類的方法,然後調用父類的方法來實作具體操作,這就是工廠方法。

其實就是java繼承和多态的具體表現!

抽象工廠模式

抽象工廠模式的定義:為建立一組相關或互相依賴的對象提供一個接口,而且無需指定它們的具體類。

同時你也可以對比一下工廠方法模式的定義:為某個對象提供一個接口,而且無需指定它們的具體類。

都是子類實作接口的方法,并在子類寫具體的代碼。這裡抽象工廠的接口類是能建立多個相關的對象,而工廠方法的接口類是隻建立一個對象。

如果抽象工廠模式的抽象工廠接口類隻建立一個對象,那麼它就是工廠方法模式。

當一個對象都有相同的限制時,可以使用抽象工廠模式。

打個比方說,這個工廠的幾個産品都需要經過某些共同的步驟和打上相同的商标,這一組産品可以在一個工廠裡面生産,減少很多重複的代碼在不同的地方都出現多次。

當然你把這幾個産品分到幾個工廠去生産也是可以的,就是會造成一個資源重複建造。

建造者模式

将一個複雜對象的建構與它的表示分離,使得同樣的建構過程可以建立不同的表示。

這裡給大家分析一下:

定義的前半句說,構造與表示分離,其實就是繼承(或實作)。

兩種工廠模式也都是為某個對象提供一個接口,而且無需指定它們的具體類。

是以建造者模式的重點是後半句:同樣的建構過程可以建立不同的結果。

建造者模式其實和工廠方法模式有很多的類似的地方,這個要看代碼的實作做比較。

原型模式

用原型執行個體指定建立對象的種類,并且通過複制這些原型建立新的對象。

java中内置了克隆機制。Object類具有一個clone()方法,能夠實作對象的克隆。

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

1.實作接口Cloneable類

2.覆寫Object的clone()方法,完成對象的克隆操作,通常隻需要調用Object的clone()方法即可。

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

如果要深入了解一些,可以看我之前寫的介紹,都有實際執行個體和代碼解釋java設計模式中的五種建立型模式:

原型模式:http://blog.csdn.net/wenzhi20102321/article/details/78167984

建造者模式:http://blog.csdn.net/wenzhi20102321/article/details/78163855

抽象工廠模式:http://blog.csdn.net/wenzhi20102321/article/details/78153437

工廠方法模式:http://blog.csdn.net/wenzhi20102321/article/details/78129065

可以仔細對比一下工廠方法模式和抽象工廠模式,看看概念,看看類圖,看看代碼,就會明白了。

單例模式:http://blog.csdn.net/wenzhi20102321/article/details/77882203

java 23種設計模式介紹:http://blog.csdn.net/wenzhi20102321/article/details/54601909

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