国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

JavaScript設(shè)計(jì)模式一:工廠模式和構(gòu)造器模式

MkkHou / 1099人閱讀

摘要:集中實(shí)例化的函數(shù)第一個(gè)實(shí)例第二個(gè)實(shí)例工廠模式的分類工廠模式分為簡(jiǎn)單工廠抽象工廠和智能工廠,工廠模式不顯示地要求使用一個(gè)構(gòu)造函數(shù)。工廠模式之弊大多數(shù)類最好使用關(guān)鍵字和構(gòu)造函數(shù),可以讓代碼更加簡(jiǎn)單易讀。帶原型的構(gòu)造器中有一個(gè)名為的屬性。

什么是模式

前陣子準(zhǔn)備期末考試,挺累也挺忙的,實(shí)在閑不得空來更新文章,今天和大家說說javascript中的設(shè)計(jì)模式。

首先呢,我們需要知道的是:模式是一種可復(fù)用的解決方案,而反模式呢就是針對(duì)某個(gè)問題的不良解決方案。

js反模式常見例子

setTimeoutsetInterval傳遞字符串,而不是函數(shù),這會(huì)觸發(fā)eval()的內(nèi)部使用。

在全局上下文中定義大量的變量污染全局命名空間

修改Object類的原型

以內(nèi)聯(lián)形式使用js,嵌入在HTML文件中的js代碼是無法包含在外部單元測(cè)試工具中的。

濫用document.write,如果在頁面加載完成后執(zhí)行docume.write,它會(huì)重寫我們所在的頁面,可以使用document.creatElement代替的話就盡量不用docume.write

設(shè)計(jì)模式的類別 創(chuàng)建型設(shè)計(jì)模式

創(chuàng)建型設(shè)計(jì)模式專注于處理對(duì)象創(chuàng)建機(jī)制,以適合給定情況的方式來創(chuàng)建對(duì)象。屬于這個(gè)類別的屬性包括:

Constructor構(gòu)造器、Factory工廠、Abstract抽象、Prototype原型、Singleton單例和Builder生成器
結(jié)構(gòu)型設(shè)計(jì)模式

結(jié)構(gòu)型模式與對(duì)象組合有關(guān),通常可以用于找出在不同對(duì)象之間建立關(guān)系的簡(jiǎn)單方法。
屬于這個(gè)類別的模式包括:

Decorator裝飾者、Facade外觀、Flyweight享元、Adapter適配器和Proxy代理
行為設(shè)計(jì)模式

行為模式專注于改善或簡(jiǎn)化系統(tǒng)中不同對(duì)象之間的通信。

行為模式包括:

Iterator迭代器、Mediator中介者、Observer觀察者和Visitor訪問者


Factory(工廠)模式

為了解決多個(gè)類似對(duì)象聲明的問題,我們可以使用一種叫做 工廠模式的方法,這種方法 就是為了解決實(shí)例化對(duì)象產(chǎn)生大量重復(fù)的問題。

 
工廠模式的分類

工廠模式分為簡(jiǎn)單工廠、抽象工廠和智能工廠,工廠模式不顯示地要求使用一個(gè)構(gòu)造函數(shù)。

簡(jiǎn)單工廠模式:使用一個(gè)類(通常為單體)來生成實(shí)例。
復(fù)雜工廠模式:使用子類來決定一個(gè)成員變量應(yīng)該是哪個(gè)具體的類的實(shí)例。

工廠模式之利
主要好處就是可以消除對(duì)象間的耦合,通過使用工程方法而不是new關(guān)鍵字。將所有實(shí)例化的代碼集中在一個(gè)位置防止代碼重復(fù)。
工廠模式之弊
大多數(shù)類最好使用new關(guān)鍵字和構(gòu)造函數(shù),可以讓代碼更加簡(jiǎn)單易讀。而不必去查看工廠方法來知道。    

工廠模式解決了重復(fù)實(shí)例化的問題 ,但還有一個(gè)問題,那就是識(shí)別問題,因?yàn)楦緹o法 搞清楚他們到底是哪個(gè)對(duì)象的實(shí)例。

alert(typeof test1); //Object 
alert(test1 instanceof Object); //true
何時(shí)使用工廠模式?

Factory模式主要在以下場(chǎng)景使用:

當(dāng)對(duì)象或組件涉及高復(fù)雜性時(shí)

當(dāng)需要根據(jù)所在的不同環(huán)境輕松生成對(duì)象的不同實(shí)例時(shí)

當(dāng)處理很多共享相同屬性的小型對(duì)象或組件時(shí)

Constructor(構(gòu)造器)模式

ECMAScript 中可以采用構(gòu)造函數(shù)(構(gòu)造方法)可用來創(chuàng)建特定的對(duì)象。 該模式正好可以解決以上的工廠模式無法識(shí)別對(duì)象實(shí)例的問題。


使用構(gòu)造函數(shù)的方法 ,即解決了重復(fù)實(shí)例化的問題 ,又解決了對(duì)象識(shí)別的問題,該模式與工廠模式的不同之處在于:

1.構(gòu)造函數(shù)方法沒有顯示的創(chuàng)建對(duì)象 (new Object()); 
2.直接將屬性和方法賦值給 this 對(duì)象;
3.沒有 renturn 語句。

構(gòu)造函數(shù)的方法有一些規(guī)范:

1.函數(shù)名和實(shí)例化構(gòu)造名相同且大寫, (PS:非強(qiáng)制,但這么寫有助于區(qū)分構(gòu)造函數(shù)和 普通函數(shù));
2.通過構(gòu)造函數(shù)創(chuàng)建對(duì)象,必須使用 new 運(yùn)算符。  

既然通過構(gòu)造函數(shù)可以創(chuàng)建對(duì)象,那么這個(gè)對(duì)象是哪里來的, new Object()在什么地方執(zhí)行了?執(zhí)行的過程如下:

1.當(dāng)使用了構(gòu)造函數(shù),并且 new 構(gòu)造函數(shù)(),那么就后臺(tái)執(zhí)行了 new Object();
2.將構(gòu)造函數(shù)的作用域給新對(duì)象 ,(即 new Object()創(chuàng)建出的對(duì)象),而函數(shù)體內(nèi)的 this 就 代表 new Object()出來的對(duì)象。
3.執(zhí)行構(gòu)造函數(shù)內(nèi)的代碼; 
4.返回新對(duì)象(后臺(tái)直接返回)。 
帶原型的Constructor(構(gòu)造器)

js中有一個(gè)名為prototype的屬性。調(diào)用js構(gòu)造器創(chuàng)建一個(gè)對(duì)象后,新對(duì)象就會(huì)具有構(gòu)造器原型的所有屬性。通過這種方式,可以創(chuàng)建多個(gè)Car對(duì)象,并訪問相同的原型。

   

現(xiàn)在run()的單一實(shí)例就能夠在所有Car對(duì)象之間共享。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/85518.html

相關(guān)文章

  • JavaScript面向?qū)ο驩OM 2(JavaScript 創(chuàng)建對(duì)象的工廠模式構(gòu)造函數(shù)模式

    摘要:都是構(gòu)造函數(shù)模式創(chuàng)建的原生構(gòu)造函數(shù)。使用構(gòu)造函數(shù)創(chuàng)建對(duì)象經(jīng)歷了以下四個(gè)過程創(chuàng)建一個(gè)新對(duì)象構(gòu)造函數(shù)的作用域交給新對(duì)象。 ??在創(chuàng)建對(duì)象的時(shí)候,使用對(duì)象字面量和 new Object() 構(gòu)造函數(shù)的方式創(chuàng)建一個(gè)對(duì)象是最簡(jiǎn)單最方便的方式。但是凡是處于初級(jí)階段的事物都會(huì)不可避免的存在一個(gè)問題,沒有普適性,意思就是說我要為世界上(程序中)的所有使用到的對(duì)象都使用一遍 var xxx = {} ,...

    you_De 評(píng)論0 收藏0
  • JavaScript面向?qū)ο驩OM 2(JavaScript 創(chuàng)建對(duì)象的工廠模式構(gòu)造函數(shù)模式

    摘要:都是構(gòu)造函數(shù)模式創(chuàng)建的原生構(gòu)造函數(shù)。使用構(gòu)造函數(shù)創(chuàng)建對(duì)象經(jīng)歷了以下四個(gè)過程創(chuàng)建一個(gè)新對(duì)象構(gòu)造函數(shù)的作用域交給新對(duì)象。 ??在創(chuàng)建對(duì)象的時(shí)候,使用對(duì)象字面量和 new Object() 構(gòu)造函數(shù)的方式創(chuàng)建一個(gè)對(duì)象是最簡(jiǎn)單最方便的方式。但是凡是處于初級(jí)階段的事物都會(huì)不可避免的存在一個(gè)問題,沒有普適性,意思就是說我要為世界上(程序中)的所有使用到的對(duì)象都使用一遍 var xxx = {} ,...

    liuchengxu 評(píng)論0 收藏0
  • 細(xì)談JavaScript中的設(shè)計(jì)模式

    摘要:注意事項(xiàng)聲明函數(shù)時(shí)候處理業(yè)務(wù)邏輯區(qū)分和單例的區(qū)別,配合單例實(shí)現(xiàn)初始化構(gòu)造函數(shù)大寫字母開頭推薦注意的成本。簡(jiǎn)單工廠模式使用一個(gè)類通常為單體來生成實(shí)例。 @(書籍閱讀)[JavaScript, 設(shè)計(jì)模式] 常見設(shè)計(jì)模式 一直對(duì)設(shè)計(jì)模式不太懂,花了一下午加一晚上的時(shí)間,好好的看了看各種設(shè)計(jì)模式,并總結(jié)了一下。 設(shè)計(jì)模式簡(jiǎn)介 設(shè)計(jì)模式概念解讀 設(shè)計(jì)模式的發(fā)展與在JavaScript中的應(yīng)用 ...

    30e8336b8229 評(píng)論0 收藏0
  • JavaScript設(shè)計(jì)模式

    摘要:依賴于接口的設(shè)計(jì)模式下面列出的設(shè)計(jì)模式,尤其依賴接口工廠模式。這些私用的靜態(tài)成員可以從構(gòu)造器內(nèi)部訪問,這意味著所有私用函數(shù)和特權(quán)函數(shù)都能訪問它們。構(gòu)造器靜態(tài)特權(quán)方法封裝之弊私用方法很難進(jìn)行單元測(cè)試。 1.弱類型語言 在JavaScript中,定義變量時(shí)不必聲明其類型。但這并不意味著變量沒有類型。一個(gè)變量可以屬于幾種類型之一,這取決于其包含的數(shù)據(jù)。JavaScript中有三種原始類型:...

    mingzhong 評(píng)論0 收藏0
  • 從ES6重新認(rèn)識(shí)JavaScript設(shè)計(jì)模式(二): 工廠模式

    摘要:簡(jiǎn)單工廠模式簡(jiǎn)單工廠模式又叫靜態(tài)工廠模式,由一個(gè)工廠對(duì)象決定創(chuàng)建某一種產(chǎn)品對(duì)象類的實(shí)例。工廠方法模式工廠方法模式的本意是將實(shí)際創(chuàng)建對(duì)象的工作推遲到子類中,這樣核心類就變成了抽象類。抽象工廠模式一般用在 1 什么是工廠模式? 工廠模式是用來創(chuàng)建對(duì)象的一種最常用的設(shè)計(jì)模式。我們不暴露創(chuàng)建對(duì)象的具體邏輯,而是將將邏輯封裝在一個(gè)函數(shù)中,那么這個(gè)函數(shù)就可以被視為一個(gè)工廠。工廠模式根據(jù)抽象程度的不...

    Reducto 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<