介紹
工廠模式建立物件(視為工廠裡的產品)時無需指定建立物件的具體類,而是定義乙個用於建立物件的介面,這個介面由子類決定例項化哪乙個類。該模式使乙個類的例項化延遲到了子類。而子類可以重寫介面方法以便建立的時候指定自己的物件型別。
這個模式十分有用,尤其是建立物件按流程賦值的時候,比如依賴於很多設定檔案等。並且,也會經常在程式裡看到工廠方法,用於讓子類定義需要建立的物件型別。
正文
工廠模式也是很簡單,直接上**,在**中就會很快明白了:
var productmanager = {};
productmanager.createproducta = function
() productmanager.createproductb = function
() productmanager.factory = function
(typetype)
productmanager.factory("createproducta");
上面這段**也太工廠模式了,那就來個實戰例子,假如我們想在網頁麵裡插入一些元素,而這些元素型別不固定,可能是,也有可能是連線,甚至可能是文字,根據工廠模式的定義,我們需要定義工廠類和相應的子類,先來定義子類的具體實現(也就是子函式):
var page = page || {};
page.dom = page.dom || {};
//子函式1:處理文字
page.dom.text = function
() ;
};page.dom.link = function
() ;
};page.dom.image = function
() ;
};
那如何定義工廠處理函式呢?其實很簡單:
page.dom.factory = function (type)
使用方式如下:
var o = page.dom.factory('link');
o.url = '';
o.insert(document.body);
讀完**,相信工廠模式也就了然於心了。
總結
以下幾種情景工廠模式特別有用:
物件的構建十分複雜
需要依賴具體環境建立不同例項
處理大量具有相同屬性的小物件
但是也不能濫用工廠模式,否則會給**增加不必要的複雜度,同時使得測試難以執行下去。
js設計模式 工廠模式
一.介紹 工廠模式主要出現在物件導向建立例項的過程中,其本質是為了更方便生成例項,因此 在遇到使用new時,就要是否要使用工廠模式 二.實現 1.uml類圖 2.實現 class product init fn1 fn2 class creator 測試 let creator new creato...
js設計模式 工廠模式
一句話總結 在建構函式外面增加乙個函式,每次建立的時候,呼叫外層函式,不用去管建構函式的內部是如何實現的。去麵館吃麵,給老闆說 來碗雜醬麵 老闆把麵端上來。在這個過程中,我們不會去關心,面是怎麼做出來的,是如何做的。給老闆說 來碗雜醬麵 就給你做雜醬麵,來碗番茄面,就給你做番茄面。這就是乙個工廠模式...
設計模式 設計模式之工廠模式
工廠方法模式 建立模式 使用場景?作用?形態?場景 大量類似的實體類 要建立的實體類都是同一本質的東西 披薩 有部分類似功能 準備 烘烤 切法 實現方式不一樣 準備的材料不同 烘烤時間不同 切法不同 將繁瑣複雜的建立類的過程聚集在一起,有序清晰 把具體例項化的過程從客戶 中抽離 作用 1 將建立物件...