首頁 web前端 js教程 javascript設計模式之工廠模式範例講解_基礎知識

javascript設計模式之工廠模式範例講解_基礎知識

May 16, 2016 pm 04:57 PM
工廠模式

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(sColororiDoors(sColororg) >  var oTempCar = new Object;
  oTempCar.color = sColor;
  oTempCar.doors = iDoors;
  oTempCar.mpg = iMpg;
  oTempTemp.Car.showor = func( 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() {


function showColor() { color);

}

function createCar(sColor,iDoors,iMpg) {
  var oTempCar = new Object;
  oTempCar.color = sColor;
  oTempCar.doors = iTempCar.color = sColor;
  oTempCar.doors = iDoors;
  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() 函數的指標。從功能上講,這樣解決了重複創建函數物件的問題;但是從語義上講,該函數不太像是物件的方法。
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

<🎜>:泡泡膠模擬器無窮大 - 如何獲取和使用皇家鑰匙
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系統,解釋
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1664
14
CakePHP 教程
1423
52
Laravel 教程
1319
25
PHP教程
1269
29
C# 教程
1248
24
java工廠模式有哪些好處 java工廠模式有哪些好處 Dec 25, 2023 pm 05:40 PM

java工廠模式的好處:1、降低系統的耦合度;2、提高程式碼的復用性;3、隱藏物件的創建過程;4、簡化物件的創建過程;5、支援依賴注入;6、提供更好的性能;7、增強可測試性;8、支持國際化;9、促進開放封閉原則;10、提供更好的擴展性。詳細介紹:1、降低系統的耦合度,工廠模式透過將物件的創建過程集中到一個工廠類別中,降低了系統的耦合度;2、提高程式碼的複用性等等。

深入解析Java工廠模式:區分與應用簡單工廠、工廠方法與抽象工廠的不同 深入解析Java工廠模式:區分與應用簡單工廠、工廠方法與抽象工廠的不同 Dec 28, 2023 pm 03:09 PM

Java工廠模式詳解:理解簡單工廠、工廠方法和抽象工廠的差異與應用場景引言在軟體開發過程中,面對複雜的物件建立和初始化過程,我們往往需要使用工廠模式來解決這個問題。 Java作為一種常用的物件導向程式語言,提供了多種工廠模式的實作方式。本文將詳細介紹Java工廠模式的三種常見實作方式:簡單工廠、工廠方法和抽象工廠,並且對它們的差異以及應用場景進行深入分析。一、

如何在Golang中應用工廠模式 如何在Golang中應用工廠模式 Apr 04, 2024 am 11:33 AM

工廠模式在Go中,工廠模式允許建立對象,無需指定特定類別:定義一個表示對象的介面(例如Shape)。建立實作該介面的具體類型(例如Circle和Rectangle)。建立工廠類,根據給定的類型建立物件(例如ShapeFactory)。在客戶端程式碼中使用工廠類別建立物件。這種設計模式增強了程式碼的靈活性,無需直接耦合到特定類型。

java框架中工廠模式的應用場景有哪些? java框架中工廠模式的應用場景有哪些? Jun 01, 2024 pm 04:06 PM

工廠模式用於解耦物件的建立過程,將其封裝在工廠類別中,使其與具體類別解耦。在Java框架中,工廠模式應用於:創建複雜物件(如Spring中的beans)提供物件隔離,增強可測試性和可維護性支援擴展,透過添加新工廠類別增加對新物件類型的支持

C++ 函式重載與重寫中單例模式與工廠模式的運用 C++ 函式重載與重寫中單例模式與工廠模式的運用 Apr 19, 2024 pm 05:06 PM

單例模式:透過函數重載提供不同參數的單例實例。工廠模式:透過函數重寫建立不同類型的對象,實現創建過程與特定產品類別的解耦。

PHP 設計模式:通往程式碼卓越的道路 PHP 設計模式:通往程式碼卓越的道路 Feb 21, 2024 pm 05:30 PM

導言PHP設計模式是一組經過驗證的解決方案,用於解決軟體開發中常見的挑戰。透過遵循這些模式,開發者可以創建優雅、健壯和可維護的程式碼。它們可協助開發者遵循SOLID原則(單一職責、開放-封閉、Liskov替換、介面隔離和依賴反轉),從而提高程式碼的可讀性、可維護性和可擴展性。設計模式的類型有許多不同的設計模式,每種模式都有其獨特的目的和優點。以下是一些最常用的php設計模式:單例模式:確保一個類別只有一個實例,並提供一種全域存取此實例的方法。工廠模式:建立一個對象,而不指定其確切類別。它允許開發者根據條件

PHP中如何使用工廠模式? PHP中如何使用工廠模式? Jun 02, 2024 pm 10:00 PM

PHP中的工廠模式允許產生物件而不指定確切類,適合在不知道實際類別的情況下建立大量物件:定義Product介面和ProductA、ProductB等特定產品類別。建立Factory類別提供createProduct方法,透過指定類型(如'A')建立對應產品。使用Factory::createProduct('A')建立所需類型產品,提高程式碼維護性、可重複使用性和動態建立靈活性。

Java工廠模式詳解:簡單工廠、工廠方法與抽象工廠 Java工廠模式詳解:簡單工廠、工廠方法與抽象工廠 Dec 28, 2023 am 10:23 AM

Java工廠模式詳解:簡單工廠、工廠方法和抽象工廠工廠模式是一種常用的設計模式,它用於根據不同的需求動態創建對象,將對象的創建與使用分離,提高程式碼的可複用性和可擴展性。在Java中,工廠模式主要有三種形式:簡單工廠、工廠方法、抽象工廠。一、簡單工廠模式簡單工廠模式是最基本的工廠模式,也是最簡單的一種形式。它透過一個工廠類別來創建對象,根據不同的參數來決定創建哪

See all articles