一,介紹
工廠模式建立物件(視為工廠裡的產品)時無需指定建立物件的具體類。
工廠模式定義乙個用於建立物件的介面,這個介面由子類決定例項化哪乙個類。該模式使乙個類的例項化延遲到了子類。而子類可以重寫介面方法以便建立的時候指定自己的物件型別。
在這裡將工廠簡單分為三種:
(1)簡單工廠:通過第三方的類完成松耦合的任務。(2)複雜工廠:通過把例項化的任務交給子類來完成的,用以到達松耦合的目的。
(3)超級工廠:通過eval()來完成智慧型工廠。
工廠的目的:
在於判斷介面最終用哪個類例項化(故與介面密不可分)。
使用工廠
最終達到的效果是:多型,和類與類之間的松耦合。二,正文部分
工廠模式與介面是密不可分的所以我們需要先引入介面檔案和繼承類檔案
(1)介面檔案:
//(2)繼承檔案定義乙個靜態方法來實現介面與實現類的直接檢驗
//靜態方法不要寫出inte***ce.prototype ,因為這是寫到介面的原型鏈上的
//我們要把靜態的函式直接寫到類層次上
//(1)定義乙個介面類
var inte***ce=function (name,methods)
this.name=name;
this.methods=;//
定義乙個空陣列裝載函式名
for(var i=0;i)
else
}};inte***ce.ensureimplement=function (object
)
for(var i=1;i)
//判斷介面中的方法是否全部實現
//遍歷函式集合
for(var j=0;j)}}
}
/*建立extend函式為了程式中所有的繼承操作
*///
subclass:子類 superclass:超類
function extend(subclass,superclass) ;
f.prototype =superclass.prototype;
//2, 讓子類繼承f
subclass.prototype = new
f();
subclass.prototype.constructor =subclass;
//3,為子類增加屬性 superclass ==》原型鏈的引用
subclass.superclass =superclass.prototype;
//4,增加乙個保險,就算你的原型類是超類(object)那麼也要把你的建構函式級別降下來
if (superclass.prototype.constructor ==object.prototype.constructor)
}
通過下面的例子,逐步引進工廠模式及改進工廠模式1,工廠模式的引入,
(1)建立介面物件
var pet=new inte***ce("pet",["
eat","
run","
sing
","register
"]);
(2)定義乙個寵物店類並在prototype上進行擴充套件
var petshop=function () {}petshop.prototype={
//**寵物的方法
sellpet:function (kind) {
//寵物物件
varpet;
//寵物種類
switch
(kind){
case
'dog
':
JavaScript設計模式
js類設計模式一 類建構函式 function myclass 定義公共屬性 myclass.prototype 定義公共方法 myclass.prototype.methoda function myclass.prototype.methodb function 呼叫 var objclass ...
JavaScript 設計模式
1 單例模式 singleton pattern 單例模式,是一種常用的軟體設計模式。在它的核心結構中只包含乙個被稱為單例的特殊類。通過單例模式可以保證系統中乙個類只有乙個例項。即乙個類只有乙個物件例項 單例模式會阻止其他物件例項化其自己的單例物件的副本,從而確保所有物件都訪問唯一例項。因為類控制了...
JavaScript設計模式
設計模式是什麼?設計模式就是一套被反覆使用 多數人知曉的 經過分類編目的 設計經驗的總結。為什麼要使用設計模式?設計模式可重用 讓 更容易被他人理解 保證 可靠性,設計模式使 編制真正工程化。設計模式怎麼來的?設計模式概念是由四人幫 設計模式 可復用物件導向軟體的基礎 的四位作者 提出,總共分成了三...