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

2021-10-02 19:39:41 字數 1952 閱讀 7771

一:介紹

工廠方法模式又簡稱為工廠模式(factory pattern), 又可稱作虛擬構造器模式(virtual constructor pattern)或多型工廠模式

(polymorphic factory pattern)。 工廠方法模式是一種類建立型模式。

二 :例子

我們為什麼要學習工廠方法模式呢?我們通過簡單工廠模式來引入,就知道了,下面舉乙個例子!

假如我想去二手車市場去購買一輛車,是不是我只要和銷售員說我要哪輛車,他就會將哪輛車展現在我面前!

這和簡單工廠模式很像,就是你只要將引數告訴工廠中的方法,工廠就會幫你返回對應的物件!

三:**演示

3.1抽象產品角色

public inte***ce car
3.2具體產品角色

public class benzcar implements car

}

public class bmwcar implements car

}

3.3工廠角色

public class ca***ctory 

return car;

}}

也可以轉換如下:

public class ca***ctory 

public static car createcar(string type)

}

3.4客戶端測試**

public class client 

}

uml類圖:

四:問題

假如我這個二手市場想要增加乙個法拉利的車,那麼要得去修改ca***ctory類中的**!然後重新編譯執行,這並不符合「」開閉原則」

那怎麼樣實現對修改關閉,對擴充套件開放呢?

五:解決方案(使用工廠方法模式)

工廠方法模式提供乙個抽象工廠介面來宣告抽象工廠方法, 而由其子類來具體實現工廠方法, 建立具體的產品物件。

5.1抽象工廠

public inte***ce ca***ctory
5.2具體工廠

//專門生產寶馬的工廠

public class bmwcar implements car

}

//專門生產賓士的工廠

public class benzfactory implements ca***ctory

}

5.3 抽象產品

public inte***ce car
5.4具體產品

public class benzcar implements car

}

public class bmwcar implements car

}

5.5 客戶端測試**

public class client

}

這樣改改造完之後,如果後期需要保時捷,不再需要去工廠類中修改**了直接再加乙個法拉利工廠(ferrarifactory)和法拉利車(ferrari implements car),非常符合開閉原則!

uml類圖:

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

之前有篇部落格,介紹了 簡單工廠模式 這篇部落格簡要的介紹一下 工廠方法模式 簡介 定義乙個使用者建立物件的介面,讓子類決定例項哪乙個類。factory method使乙個類的例項化延遲到子類。設計模式 gof 核心工廠類不再負責產品的建立,這樣核心類成為乙個抽象工廠角色,僅負責具體工廠子類必須實現...

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

之前有篇部落格,介紹了 簡單工廠模式 這篇部落格簡要的介紹一下 工廠方法模式 簡介 定義乙個使用者建立物件的介面,讓子類決定例項哪乙個類。factory method使乙個類的例項化延遲到子類。設計模式 gof 核心工廠類不再負責產品的建立,這樣核心類成為乙個抽象工廠角色,僅負責具體工廠子類必須實現...

設計模式2之 簡單工廠模式 工廠方法模式

a 簡單工廠模式概述 又叫靜態工廠方法模式,它定義乙個具體的工廠類負責建立一些類的例項 b 優點 客戶端不需要在負責物件的建立,從而明確了各個類的職責 c 缺點 這個靜態工廠類負責所有物件的建立,如果有新的物件增加,或者某些物件的建立方式不同,就需要不斷的修改工廠類,不利於後期的維護 d 案例演示 ...