title: "[設計模式]創建型模式"
date: 2016-03-07 18:05
tags:
- 設計模式
- design
- pattern
- creational
- factory
- method
- abstract
- singlton
categories: - 技術
摘要:設計模式并不能減小系統的復雜度,并不能減少if...else...,它只是幫助把代碼放在適當的位置,以便在需求更改時改動的代碼最少,
簡單工廠模式
- 簡單工廠模式的要點在于:當你需要什么,只需要傳入一個正確的引數,就可以獲取你所需要的物件,而無須知道其創建細節,
- 簡單工廠模式最大的優點在于實作物件的創建和物件的使用分離,將物件的創建交給專門的工廠類負責,但是其最大的缺點在于工廠類不夠靈活,增加新的具體產品需要修改工廠類的判斷邏輯代碼,而且產品較多時,工廠方法代碼將會非常復雜,
- 簡單工廠模式適用情況包括:工廠類負責創建的物件比較少;客戶端只知道傳入工廠類的引數,對于如何創建物件不關心,

工廠方法模式
本質上說就是產品創建功能的下放,交給子類去做,
- 工廠方法模式是簡單工廠模式的進一步抽象和推廣,由于使用了面向物件的多型性,工廠方法模式保持了簡單工廠模式的優點,而且克服了它的缺點,在工廠方法模式中,核心的工廠類不再負責所有產品的創建,而是將具體創建作業交給子類去做,這個核心類僅僅負責給出具體工廠必須實作的介面,而不負責產品類被實體化這種細節,這使得工廠方法模式可以允許系統在不修改工廠角色的情況下引進新產品,
- 工廠方法模式的主要優點是增加新的產品類時無須修改現有系統,并封裝了產品物件的創建細節,系統具有良好的靈活性和可擴展性;其缺點在于增加新產品的同時需要增加新的工廠,導致系統類的個數成對增加,在一定程度上增加了系統的復雜性,

抽象工廠模式
最重要的概念:產品族,
抽象工廠模式適用情況包括:
- 一個系統不應當依賴于產品類實體如何被創建、組合和表達的細節;
- 系統中有多于一個的產品族,而每次只使用其中某一產品族;
- 屬于同一個產品族的產品將在一起使用;
- 系統提供一個產品類的庫,所有的產品以同樣的介面出現,從而使客戶端不依賴于具體實作,

建造者模式
- 在建造者模式的結構中引入了一個指揮者類,該類的作用主要有兩個:一方面它隔離了客戶與生產程序;另一方面它負責控制產品的生成程序,指揮者針對抽象建造者編程,客戶端只需要知道具體建造者的型別,即可通過指揮者類呼叫建造者的相關方法,回傳一個完整的產品物件,
- 建造者模式適用情況包括:需要生成的產品物件有復雜的內部結構,這些產品物件通常包含多個成員屬性;需要生成的產品物件的屬性相互依賴,需要指定其生成順序;物件的創建程序獨立于創建該物件的類;隔離復雜物件的創建和使用,并使得相同的創建程序可以創建不同型別的產品,
- 建造者模式所創建的產品一般具有較多的共同點,其組成部分相似,如果產品之間的差異性很大,則不適合使用建造者模式,因此其使用范圍受到一定的限制,

單例模式
(略)
原型模式
關鍵字: - clone();;
區分
- 抽象工廠模式與建造者模式相似,都可以創建組復雜物件,主要的區別是Builder模式著重于一步步構建一個復雜物件,而Abstract Factory著重于多個系列的產品物件,Builder在最后一步回傳產品(封裝了產品的構建),而對于Abstract Factory來說,產品是立即回傳的,
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/29325.html
標籤:設計模式
