與建立型模式類似,工廠模式建立物件(視為工廠裡的產品)時無需指定建立物件的具體類。
工廠模式定義乙個用於建立物件的介面,這個介面由子類決定例項化哪乙個類。該模式使乙個類的例項化延遲到了子類。而子類可以重寫介面方法以便建立的時候指定自己的物件型別。
這個模式十分有用,尤其是建立物件的流程賦值的時候,比如依賴於很多設定檔案等。並且,你會經常在程式裡看到工廠方法,用於讓子類類定義需要建立的物件型別。
下面這個例子中,是應用了工廠方法對第26章建構函式模式**的改進版本:
var car = (function () ;return function (model, year, miles) ;
})();
var tom = new car("tom", 2009, 20000);
var dudu = new car("dudu", 2010, 5000);
不好理解的話,我們再給乙個例子:
var productmanager = {};productmanager.createproducta = function ()
productmanager.createproductb = function ()
productmanager.factory = function (typetype)
productmanager.factory("createproducta");
如果還不理解的話,那我們就再詳細一點咯,假如我們想在網頁麵裡插入一些元素,而這些元素型別不固定,可能是,也有可能是連線,甚至可能是文字,根據工廠模式的定義,我們需要定義工廠類和相應的子類,我們先來定義子類的具體實現(也就是子函式):
那麼我們如何定義工廠處理函式呢?其實很簡單:
page.dom.factory = function (type)
使用方式如下:
var o = page.dom.factory('link');o.url = '';
o.insert(document.body);
至此,工廠模式的介紹相信大家都已經了然於心了,我就不再多敘述了。
什麼時候使用工廠模式
以下幾種情景下工廠模式特別有用:
物件的構建十分複雜
需要依賴具體環境建立不同例項
處理大量具有相同屬性的小物件
什麼時候不該用工廠模式
不濫用運用工廠模式,有時候僅僅只是給**增加了不必要的複雜度,同時使得測試難以執行下去。
2017-08-27 22:26:15
設計模式 設計模式之工廠模式
工廠方法模式 建立模式 使用場景?作用?形態?場景 大量類似的實體類 要建立的實體類都是同一本質的東西 披薩 有部分類似功能 準備 烘烤 切法 實現方式不一樣 準備的材料不同 烘烤時間不同 切法不同 將繁瑣複雜的建立類的過程聚集在一起,有序清晰 把具體例項化的過程從客戶 中抽離 作用 1 將建立物件...
c 設計模式 之 工廠模式之 工廠模式
1 uml類圖 實現和依賴關係 實現 sportfactory jeepfactory hatchbackfactory 實現 ifactory 介面 sportcar jeepcar hatchbackcar 實現 icar 介面 依賴 ifactory 依賴 icar sportfactory ...
設計模式 工廠模式之簡單工廠模式
定義 由乙個工廠物件 工廠類 來指定建立某乙個產品類的例項。使用場景 客戶端只需傳入指定的引數即可,工廠類負責建立的物件較少 因為指定了傳入的引數 介面類 本想用iphone命名的,見諒 public inte ce phone實現介面類 public class huaweiphone imple...