設計模式 建立型模式

2021-08-22 06:00:26 字數 1852 閱讀 2326

建立模式(creational pattern)是對類的例項化過程的抽象化。一些系統在建立物件時,需要動態地決定怎樣建立物件,建立哪些物件,以及如何組合和表示這些物件。建立模式描述了怎樣構造和封裝這些動態的決定。

建立型模式分為類的建立模式和物件建立模式

類的建立模式

類的建立模式使用繼承關係,把類的建立延遲到子類,從而封裝了客戶端將得到哪些具體類的資訊,並且隱藏了這些類的例項是如何建立和放在一起的。

物件的建立模式

物件的建立模式則把物件的建立過程動態的委派給另乙個物件,從而動態地決定客戶端將得到哪些具體類的例項,以及這些類的例項是如何被建立和組合在一起的。

單例模式

單例模式(singleton),保證乙個類只有乙個例項,並提供乙個訪問它的全域性訪問點。

應用場景:避免產生多個物件消耗過多的資源(特別是乙個物件需要頻繁的建立和銷毀時);

提供乙個全域性訪問點,常常被用來管理系統中共享的資源(作為乙個manager)。

優點:

保證唯一的例項,嚴格控制客戶怎樣訪問以及何時訪問,對唯一例項受控訪問

工廠方法模式

工廠方法模式(factory method),定義乙個用於建立物件的介面,讓子類決定例項化哪乙個類。工廠方法是乙個類的例項化延遲到其子類。

應用場景:單一產品的建立。

優點:

集中了封裝物件的建立,使得要更換物件時,不需要做大的改動就可實現,降低了客戶程式與產品物件的耦合

缺點:由於每加乙個產品,就需要加乙個產品工廠的類,增加的了額外的開發量

抽象工廠模式

抽象工廠模式(abstract factory),提供乙個建立一系列相關或相互依賴物件的介面,而無需指定它們具體的類。

應用場景:乙個系統不要求依賴產品類例項如何被建立、組合和表達的表達,這個系統有多個系列產品,而系統中只消費其中某一系列產品,系統要求提供乙個產品類的庫,所有產品以同樣的介面出現,客戶端不需要依賴具體實現。

優點:

1.易於交換產品系列,在乙個應用中只需要在初始化的時候出現一次,這就使得改變乙個應用的具體工廠變得非常容易,它只需要改變具體工廠即可使用不同的產品配置。

2.它讓具體的建立例項過程與客戶端分離,客戶端是通過它們的抽象介面操縱例項,產品的具體類名也被具體工廠的實現分離,不會出現在客戶**中。

缺點:

無法輕易做出改動,一旦改動所有類都需要改動。

簡單工廠:簡單實用,但違反開放封閉;

工廠方法:開放封閉,單一產品;

抽象工廠:開放封閉,多個產品;

反射工廠:可以最大限度的解耦。

原型模式

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

應用場景:乙個物件的產生可以不由零起步,直接從乙個已經具備一定雛形的物件轉殖,然後再修改為生產需要的物件。

優點:

1.一般在初始化的資訊不發生變化的情況下,轉殖是最好的方法,即隱藏了物件建立的細節,又對效能大大提高。       2.不同重新初始化物件,動態獲得物件執行的狀態。

缺點:

1、每個類必須配備乙個轉殖方法

2、配備轉殖方法需要對類的功能進行通盤考慮,這對於全新的類不是很難,但對於已有的類不一定很容易,特別當乙個類引用不支援序列化的間接物件,或者引用含有迴圈結構的時候。

建造者模式

建造者模式(builder),將乙個複雜物件的構建與它的表示分離,使得同樣的構建過程可以建立不同的表示。

應用場景:主要用於建立一些複雜的物件,這些物件的內部構造間的建造順序通常是穩定的,但物件內部的構建通常面臨著複雜的變化。

優點:

使得建造**與表示**分離,由於建造者隱藏了該產品是如何組裝的,所以若需要改變乙個產品的內部顯示,只需要再定義乙個具體的建造者就可以了。

設計模式 建立型模式 原型模式

1 原型模式 prototype模式 是指 用原型例項指定建立物件的種類,並且通過拷貝這些原型,建立新的物件 2 原型模式是一種建立型設計模式,允許乙個物件再建立另外乙個可定製的物件,無需知道如何建立的細節 3 工作原理是 通過將乙個原型物件傳給那個要發動建立的物件,這個要發動建立的物件通過請求原型...

設計模式 建立型模式

建立型模式 與物件的建立有關。1 簡單工廠模式 靜態工廠 簡單工廠關聯具體類,通過簡單工廠來建立具體的類。封裝變化到簡單工廠裡面去。工廠類 具體類 2 工廠模式 抽象工廠 具體工廠 具體類 要是新增新的類,只需要擴充套件就可以了。他們對外的行為是一致的。3 抽象工廠 抽象工廠 具體工廠 具體類 具體...

設計模式 建立型模式

建立型模式 工廠方法 核心 客戶端呼叫具體的工廠,讓工廠去決定例項化哪個具體的類。核心 為工廠類建立對應的具體的類,表現為和對應的具體類的依賴關係。抽象工廠類 inte ce productfactory 具體a工廠 class concreteproductfactorya productfact...