設計模式之深入理解工廠方法模式

2021-10-23 16:20:10 字數 1899 閱讀 9201

對於工廠模式大家都是耳熟能詳的,但是發現大家對工廠模式的叫法比較混亂,我先明確一下概念。工廠模式分為「工廠方法模式」和「抽象工廠模式」,此兩種模式是屬於gof23種經典設計模式的。平時大家所說的「工廠模式「其實就是指「工廠方法模式」,工廠方法模式還可以退化為「簡單工廠模式」,「簡單工廠模式」並不屬於gof23中經典設計模式。本文將介紹工廠方法模式。

定義乙個建立產品物件的工廠介面,將產品物件的實際建立工作推遲到具體子工廠類當中。

具體產品和具體工廠一 一對應

1:優點

使用者只需要知道具體工廠的名稱就可得到所要的產品,無須知道產品的具體建立過程;

在系統增加新的產品時只需要新增具體產品類和對應的具體工廠類,無須對原工廠進行任何修改,滿足開閉原則

2:缺點

每增加乙個產品就要增加乙個具體產品類和乙個對應的具體工廠類,這增加了系統的複雜度。

複雜物件適合使用工廠方法模式,而簡單物件,特別是只需要通過 new 就可以完成建立的物件,無需使用工廠方法模式,如果使用工廠方法模式,就需要引入乙個工廠類,會增加系統的複雜度。

1:客戶只知道建立產品的工廠名,而不知道具體的產品名。如 tcl 電視工廠、海信電視工廠等。

2:建立物件的任務由多個具體子工廠中的某乙個完成,而抽象工廠只提供建立產品的介面。

3:客戶不關心建立產品的細節,只關心產品的品牌。

1、該模式的主要角色如下:

抽象工廠:提供建立產品的介面,呼叫者通過它訪問具體工廠的工廠方法建立產品

具體工廠:實現抽象工廠的方法,完成具體產品的建立

抽象產品:定義產品的規範,描述了產品的主要特徵和功能

具體產品:實現抽象產品定義的功能

2、結構圖如下:

步驟1:建立抽象類:car

步驟2:建立子類bmw、audi

步驟3:建立抽象工廠:ca***ctory(此處採用介面實現)

步驟4:建立具體工廠:奧迪工廠(audifactory)和寶馬工廠(bmwfactory)

步驟5:客戶端**

1、張三想買奧迪,那麼就通過奧迪工廠來生產車

2、李四想買白馬,那麼就通過寶馬工廠來生產車

步驟6:客戶端**

執行**,檢視結果,奧迪工廠生產了一輛奧迪,寶馬工廠生產了一輛寶馬。

1:工廠方法模式是滿足開閉原則的。

2:如果建立的物件簡單,則不必使用工廠模式。

3:產品和工廠是一 一對應的。

4:當需要生成的產品不多且不會增加,乙個具體工廠類就可以完成任務時,可刪除抽象工廠類。這時工廠方法模式將退化到簡單工廠模式。

設計模式 工廠模式之工廠方法模式

工廠方法模式是指定義乙個建立物件的介面,然後實現這個介面的工廠來決定建立什麼樣的例項。工廠方法讓類的例項推遲到子類中進行。在這個模式中,只關心需要建立的是什麼工廠,不需要關心建立的細節。而且新加入的產品符合開閉原則。1 建立支付介面,裡面定義抽象的支付方法。package com.gupao.vip...

設計模式之工廠方法模式

package com.csair.design.pattern 工廠方法,有抽象基類,每個子類生產乙個具體物件,與抽象工廠的關係是,抽象工廠生產多個產品 產品有某種內在聯絡 工廠方法只生產乙個物件 author ppt public class factorymethod public stati...

設計模式之工廠方法模式

在介紹工廠方法模式之前,先來介紹一下簡單工廠。什麼是簡單工廠?在類中,難免要例項化一些類,那麼我們把這些類的例項化抽離出來封裝成乙個工廠類,工廠類提供乙個公共的靜態或非靜態的方法來返回其他物件所需要的物件。這樣做的目的就是將物件的例項化與邏輯 分開,提高 的復用能力。這就是簡單工廠。public a...