引入:
簡單工廠模式雖然簡單,但存在乙個很嚴重的問題。**當系統中需要引入新產品時,由於靜態工廠方法通過所傳入引數的不同來建立不同的產品,這必定要修改工廠類的源**,將違背「開閉原則」,如何實現增加新產品而不影響已有**?**工廠方法模式應運而生。
在工廠方法模式中,我們不再提供乙個統一的工廠類來建立所有的產品物件,而是針對不同的產品提供不同的工廠,系統提供乙個與產品等級結構對應的工廠等級結構。
工廠方法模式(factory method pattern):定義乙個用於建立物件的介面,讓子類決定將哪乙個類例項化。工廠方法模式讓乙個類的例項化延遲到其舉例:子類。工廠方法模式又簡稱為工廠模式(factory pattern),又可稱作虛擬構造器模式(virtual constructor pattern)或多型工廠模式(polymorphic factory pattern)。工廠方法模式是一種類建立型模式。
還是以點餐為例,以簡單工廠模式的例子進行拓展:
1、eat介面,所有的食品都需要實現的介面,遵循的規範
public inte***ce eat
2、具體實現類
public class barbecue implements eat
}public class dessert implements eat
}public class seafood implements eat
}
3、工廠(總廠)
public inte***ce eatfactory
4、各個分廠
public class barbecuefactory implements eatfactory
}public class dessertfactory implements eatfactory
}public class seafoodfactory implements eatfactory
}
5、測試
public class client
}
工廠方法模式是簡單工廠模式的延伸,它繼承了簡單工廠模式的優點,同時還彌補了簡單工廠模式的不足。
工廠方法模式是使用頻率最高的設計模式之一,是很多開源框架和api類庫的核心模式。
主要優點:
主要缺點:
設計模式 工廠模式之工廠方法模式
工廠方法模式是指定義乙個建立物件的介面,然後實現這個介面的工廠來決定建立什麼樣的例項。工廠方法讓類的例項推遲到子類中進行。在這個模式中,只關心需要建立的是什麼工廠,不需要關心建立的細節。而且新加入的產品符合開閉原則。1 建立支付介面,裡面定義抽象的支付方法。package com.gupao.vip...
設計模式之工廠方法模式
package com.csair.design.pattern 工廠方法,有抽象基類,每個子類生產乙個具體物件,與抽象工廠的關係是,抽象工廠生產多個產品 產品有某種內在聯絡 工廠方法只生產乙個物件 author ppt public class factorymethod public stati...
設計模式之工廠方法模式
在介紹工廠方法模式之前,先來介紹一下簡單工廠。什麼是簡單工廠?在類中,難免要例項化一些類,那麼我們把這些類的例項化抽離出來封裝成乙個工廠類,工廠類提供乙個公共的靜態或非靜態的方法來返回其他物件所需要的物件。這樣做的目的就是將物件的例項化與邏輯 分開,提高 的復用能力。這就是簡單工廠。public a...