摘要:集中實例化的函數第一個實例第二個實例工廠模式的分類工廠模式分為簡單工廠抽象工廠和智能工廠,工廠模式不顯示地要求使用一個構造函數。工廠模式之弊大多數類最好使用關鍵字和構造函數,可以讓代碼更加簡單易讀。帶原型的構造器中有一個名為的屬性。
什么是模式
前陣子準備期末考試,挺累也挺忙的,實在閑不得空來更新文章,今天和大家說說javascript中的設計模式。
首先呢,我們需要知道的是:模式是一種可復用的解決方案,而反模式呢就是針對某個問題的不良解決方案。
js反模式常見例子向setTimeout和setInterval傳遞字符串,而不是函數,這會觸發eval()的內部使用。
在全局上下文中定義大量的變量污染全局命名空間
修改Object類的原型
以內聯形式使用js,嵌入在HTML文件中的js代碼是無法包含在外部單元測試工具中的。
濫用document.write,如果在頁面加載完成后執行docume.write,它會重寫我們所在的頁面,可以使用document.creatElement代替的話就盡量不用docume.write。
設計模式的類別 創建型設計模式創建型設計模式專注于處理對象創建機制,以適合給定情況的方式來創建對象。屬于這個類別的屬性包括:
Constructor構造器、Factory工廠、Abstract抽象、Prototype原型、Singleton單例和Builder生成器結構型設計模式
結構型模式與對象組合有關,通常可以用于找出在不同對象之間建立關系的簡單方法。
屬于這個類別的模式包括:
Decorator裝飾者、Facade外觀、Flyweight享元、Adapter適配器和Proxy代理行為設計模式
行為模式專注于改善或簡化系統中不同對象之間的通信。
行為模式包括:
Iterator迭代器、Mediator中介者、Observer觀察者和Visitor訪問者Factory(工廠)模式
為了解決多個類似對象聲明的問題,我們可以使用一種叫做 工廠模式的方法,這種方法 就是為了解決實例化對象產生大量重復的問題。
工廠模式的分類
工廠模式分為簡單工廠、抽象工廠和智能工廠,工廠模式不顯示地要求使用一個構造函數。
簡單工廠模式:使用一個類(通常為單體)來生成實例。
復雜工廠模式:使用子類來決定一個成員變量應該是哪個具體的類的實例。
主要好處就是可以消除對象間的耦合,通過使用工程方法而不是new關鍵字。將所有實例化的代碼集中在一個位置防止代碼重復。工廠模式之弊
大多數類最好使用new關鍵字和構造函數,可以讓代碼更加簡單易讀。而不必去查看工廠方法來知道。
工廠模式解決了重復實例化的問題 ,但還有一個問題,那就是識別問題,因為根本無法 搞清楚他們到底是哪個對象的實例。
alert(typeof test1); //Object alert(test1 instanceof Object); //true何時使用工廠模式?
Factory模式主要在以下場景使用:
當對象或組件涉及高復雜性時
當需要根據所在的不同環境輕松生成對象的不同實例時
當處理很多共享相同屬性的小型對象或組件時
Constructor(構造器)模式ECMAScript 中可以采用構造函數(構造方法)可用來創建特定的對象。 該模式正好可以解決以上的工廠模式無法識別對象實例的問題。
使用構造函數的方法 ,即解決了重復實例化的問題 ,又解決了對象識別的問題,該模式與工廠模式的不同之處在于:
1.構造函數方法沒有顯示的創建對象 (new Object()); 2.直接將屬性和方法賦值給 this 對象; 3.沒有 renturn 語句。
構造函數的方法有一些規范:
1.函數名和實例化構造名相同且大寫, (PS:非強制,但這么寫有助于區分構造函數和 普通函數); 2.通過構造函數創建對象,必須使用 new 運算符。
既然通過構造函數可以創建對象,那么這個對象是哪里來的, new Object()在什么地方執行了?執行的過程如下:
1.當使用了構造函數,并且 new 構造函數(),那么就后臺執行了 new Object(); 2.將構造函數的作用域給新對象 ,(即 new Object()創建出的對象),而函數體內的 this 就 代表 new Object()出來的對象。 3.執行構造函數內的代碼; 4.返回新對象(后臺直接返回)。帶原型的Constructor(構造器)
js中有一個名為prototype的屬性。調用js構造器創建一個對象后,新對象就會具有構造器原型的所有屬性。通過這種方式,可以創建多個Car對象,并訪問相同的原型。
現在run()的單一實例就能夠在所有Car對象之間共享。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/85518.html
摘要:都是構造函數模式創建的原生構造函數。使用構造函數創建對象經歷了以下四個過程創建一個新對象構造函數的作用域交給新對象。 ??在創建對象的時候,使用對象字面量和 new Object() 構造函數的方式創建一個對象是最簡單最方便的方式。但是凡是處于初級階段的事物都會不可避免的存在一個問題,沒有普適性,意思就是說我要為世界上(程序中)的所有使用到的對象都使用一遍 var xxx = {} ,...
摘要:都是構造函數模式創建的原生構造函數。使用構造函數創建對象經歷了以下四個過程創建一個新對象構造函數的作用域交給新對象。 ??在創建對象的時候,使用對象字面量和 new Object() 構造函數的方式創建一個對象是最簡單最方便的方式。但是凡是處于初級階段的事物都會不可避免的存在一個問題,沒有普適性,意思就是說我要為世界上(程序中)的所有使用到的對象都使用一遍 var xxx = {} ,...
摘要:注意事項聲明函數時候處理業務邏輯區分和單例的區別,配合單例實現初始化構造函數大寫字母開頭推薦注意的成本。簡單工廠模式使用一個類通常為單體來生成實例。 @(書籍閱讀)[JavaScript, 設計模式] 常見設計模式 一直對設計模式不太懂,花了一下午加一晚上的時間,好好的看了看各種設計模式,并總結了一下。 設計模式簡介 設計模式概念解讀 設計模式的發展與在JavaScript中的應用 ...
摘要:依賴于接口的設計模式下面列出的設計模式,尤其依賴接口工廠模式。這些私用的靜態成員可以從構造器內部訪問,這意味著所有私用函數和特權函數都能訪問它們。構造器靜態特權方法封裝之弊私用方法很難進行單元測試。 1.弱類型語言 在JavaScript中,定義變量時不必聲明其類型。但這并不意味著變量沒有類型。一個變量可以屬于幾種類型之一,這取決于其包含的數據。JavaScript中有三種原始類型:...
摘要:簡單工廠模式簡單工廠模式又叫靜態工廠模式,由一個工廠對象決定創建某一種產品對象類的實例。工廠方法模式工廠方法模式的本意是將實際創建對象的工作推遲到子類中,這樣核心類就變成了抽象類。抽象工廠模式一般用在 1 什么是工廠模式? 工廠模式是用來創建對象的一種最常用的設計模式。我們不暴露創建對象的具體邏輯,而是將將邏輯封裝在一個函數中,那么這個函數就可以被視為一個工廠。工廠模式根據抽象程度的不...
閱讀 3338·2021-11-22 14:44
閱讀 2547·2019-08-30 14:10
閱讀 2603·2019-08-30 13:12
閱讀 1224·2019-08-29 18:36
閱讀 1350·2019-08-29 16:16
閱讀 3337·2019-08-26 10:33
閱讀 1767·2019-08-23 18:16
閱讀 385·2019-08-23 18:12