工厂方法模式(Factory Method Pattern)
水果店開(kāi)業(yè)在即,小明需要去進(jìn)貨,考慮到水果的種類(lèi)和成本問(wèn)題決定先去探訪一下貨源和價(jià)格,小明發(fā)現(xiàn)蘋(píng)果在A商那邊便宜2毛,西瓜在Z商那邊便宜3毛,榴蓮在C商那邊便宜4毛。這里每一個(gè)商販?zhǔn)且粋€(gè)工廠,每個(gè)工廠提供不同的水果,下面我們來(lái)介紹工廠方法模式
工廠方法模式(Factory Method Pattern):定義一個(gè)用于創(chuàng)建對(duì)象的接口,但是讓子類(lèi)決定哪一個(gè)類(lèi)實(shí)例化,工廠方法模式讓一個(gè)類(lèi)的實(shí)例化延遲到其子類(lèi)。
工廠方法模式是一個(gè)創(chuàng)建型模式,下面我們來(lái)看看他的結(jié)構(gòu)圖:
工廠方法的實(shí)現(xiàn):
Product(抽象產(chǎn)品):定義產(chǎn)品的接口,是所有產(chǎn)品對(duì)象的公共父類(lèi)
interface Product {void TestMethod(); }Concrete Product(具體產(chǎn)品):實(shí)現(xiàn)抽象產(chǎn)品的具體產(chǎn)品
class ConcreteProduct : Product {public void TestMethod(){Console.WriteLine("Hello World!");} }Factory(抽象工廠):定義工廠的接口,它是工廠方法的核心所有的工廠都必須實(shí)現(xiàn)抽象工廠,并且返回產(chǎn)品
interface Factory {Product FactoryMethod(); }Concrete Factory(具體工廠):實(shí)現(xiàn)抽象工廠的具體工廠
class ConcreteFactory : Factory {public Product FactoryMethod(){return new ConcreteProduct();} }具體調(diào)用實(shí)現(xiàn):
Factory factory = new ConcreteFactory(); Product product = factory.FactoryMethod(); product.TestMethod();工廠方法的優(yōu)點(diǎn):
1.工廠方法用來(lái)創(chuàng)建客戶所需的產(chǎn)品,同時(shí)還向客戶隱藏了具體產(chǎn)品實(shí)例化的細(xì)節(jié)
2.擴(kuò)展性好符合開(kāi)閉原則,新增一個(gè)具體產(chǎn)品或者具體工廠無(wú)需修改代碼,只需要添加到工廠即可
工廠方法的缺點(diǎn):
1.每添加一種產(chǎn)品需要提供對(duì)應(yīng)的工廠類(lèi),系統(tǒng)中的類(lèi)成對(duì)增加,系統(tǒng)在編譯的時(shí)候會(huì)增加額外的開(kāi)銷(xiāo)
2.增加了系統(tǒng)的抽象性和理解難度
適用環(huán)境
1.客戶端不知道它所需的對(duì)象的類(lèi)
2.抽象工廠類(lèi)通過(guò)其子類(lèi)制定創(chuàng)建哪個(gè)對(duì)象
?
?
總結(jié)
以上是生活随笔為你收集整理的工厂方法模式(Factory Method Pattern)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: UIImageView 上下和左右翻转
- 下一篇: 复习-网络编程之IP和端口号