一:介紹
工廠方法模式又簡稱為工廠模式(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 案例演示 ...