萬盛學電腦網

 萬盛學電腦網 >> 腳本專題 >> javascript >> javascript設計模式中的工廠模式示例

javascript設計模式中的工廠模式示例

 這篇文章主要介紹了javascript設計模式中的工廠模式示例講解,需要的朋友可以參考下

javaScript工廠方式原始的方式   因為對象的屬性可以在對象創建後動態定義,這在 JavaScript 最初引入時都會編寫類似下面的代碼   代碼如下: var oCar = new Object; oCar.color = "blue"; oCar.doors = 4; oCar.mpg = 25; oCar.showColor = function() {   alert(this.color); };     在上面的代碼中,創建對象 car。然後給它設置幾個屬性:它的顏色是藍色,有四個門,每加侖油可以跑 25 英裡。最後一個屬性實際上是指向函數的指針,意味著該屬性是個方法。執行這段代碼後,就可以使用對象 car。不過這裡有一個問題,就是可能需要創建多個 car 的實例,這顯然不是很好的方式。   解決方案:工廠方法 要解決該問題,開發者創造了能創建並返回特定類型的對象的工廠函數。例如,函數 createCar() 可用於封裝前面列出的創建 car 對象的操作:    代碼如下: function createCar(sColor,iDoors,iMpg) {   var oTempCar = new Object;   oTempCar.color = sColor;   oTempCar.doors = iDoors;   oTempCar.mpg = iMpg;   oTempCar.showColor = function() {     alert(this.color);   };   return oTempCar; }   var oCar1 = createCar("red",4,23); var oCar2 = createCar("blue",3,25);   oCar1.showColor();        //輸出 "red" oCar2.showColor();        //輸出 "blue"       調用此工廠函數,將創建新對象,並賦予它所有必要的屬性,給 createCar() 函數加上參數,即可為要創建的 car 對象的 color、doors 和 mpg 屬性賦值。這使兩個對象具有相同的屬性,卻有不同的屬性值。該方法有個不好的地方在於每創建一個car對象(即調用一次createCar函數)都會重復的為每個對象創建showColor 方法,而這時沒有必要的而事實上,每個對象都共享同一個函數。於是我們嘗試在函數之外去聲明其方法屬性。   在工廠函數外定義對象的方法 有些開發者在工廠函數外定義對象的方法,然後通過屬性指向該方法,從而避免這個問題:      代碼如下: function showColor() {   alert(this.color); }   function createCar(sColor,iDoors,iMpg) {   var oTempCar = new Object;   oTempCar.color = sColor;   oTempCar.doors = iDoors;   oTempCar.mpg = iMpg;   oTempCar.showColor = showColor;   return oTempCar; }   var oCar1 = createCar("red",4,23); var oCar2 = createCar("blue",3,25);   oCar1.showColor();        //輸出 "red" oCar2.showColor();        //輸出 "blue"       在上面這段重寫的代碼中,在函數 createCar() 之前定義了函數 showColor()。在 createCar() 內部,賦予對象一個指向已經存在的 showColor() 函數的指針。從功能上講,這樣解決了重復創建函數對象的問題;但是從語義上講,該函數不太像是對象的方法。    
copyright © 萬盛學電腦網 all rights reserved