天堂国产午夜亚洲专区-少妇人妻综合久久蜜臀-国产成人户外露出视频在线-国产91传媒一区二区三区

js設計模式總結(jié)1

發(fā)布時間:2017-05-01 18:01

  本文關鍵詞:JavaScript設計模式,由筆耕文化傳播整理發(fā)布。


js設計模式有很多種,知道不代表會用,更不代表理解,為了更好的理解每個設計模式,對每個設計模式進行總結(jié),以后只要看到總結(jié),就能知道該設計模式的作用,以及模式存在的優(yōu)缺點,使用范圍。

本文主要參考張容銘著的《JavaScript設計模式》。

1、簡單工廠模式

由一個工廠對象決定創(chuàng)建某一種產(chǎn)品對象類的實例,主要用來創(chuàng)建同一類對象。

舉例子:1、比如不同的彈出框,有警告框,提示框,確認框等。我們創(chuàng)建一個大類包含包含其共有的部分,比如顯示,內(nèi)容等,再根據(jù)創(chuàng)建是選擇的類型,再將差異部分添加進去。

2、體育店里面有很多商品,及相關介紹,我們要買的時候,只要體育店有,就會得到相關產(chǎn)品和信息。先創(chuàng)建不同產(chǎn)品的基類,然后再用一個大類(也就是所謂的工廠)來包容這些基類。可用switch來選擇確定要創(chuàng)建什么。

總結(jié):第一種是通過創(chuàng)建一個新對象然后包裝增強其屬性和功能實現(xiàn)的。第二種是通過類的實例化實現(xiàn)的。前一種因為共享父類,所以父類的方法方法屬性是可以共用的,后者就不行了。簡單工廠模式使用場合通常也限制在創(chuàng)建單一對象

2、工廠方法模式

工廠方法模式:通過對產(chǎn)品類的抽象使其創(chuàng)建業(yè)務主要負責用于創(chuàng)建多類產(chǎn)品的實例。將實際創(chuàng)對象工作推遲到子類中,這樣核心類就成了抽象類。

其中涉及到一個安全模式類:

var demo = function(){ if(!(this instanceof demo)){ return new demo(); } }

通過判斷this是不是實例來進行實例化。這樣就可以避免漏掉new關鍵字。

var Factory=function(type,content){ if(this instanceof Factory){ var s=new this[type](content); }else{ return new Factory(type,content) } } Factory.prototype={ java:function(content){ //...... }, php:function(content){ //...... }, //...... }

在原型上添加不同類型的方法,然后在調(diào)用子類的時候?qū)嵗。如果采用簡單工廠模式的話,用類實例化方法,但是這樣需要修改工廠方法和添加基類,也就是要修改兩個地方。而采用上面的方法,只需要在原型上添加方法就可以了。

避免了使用者和對象類之間的耦合,用戶不用關心創(chuàng)建該類的具體類,只需要調(diào)用工廠方法就可以。

3、抽象工廠模式

抽象類并不是用來創(chuàng)建具體的類,而是用來當做父類來創(chuàng)建一些子類。創(chuàng)建的是一個類簇,它制定了類的結(jié)構(gòu)。其實就是先創(chuàng)建一個大類,然后在細分下,添加小類的實現(xiàn)方法,將小類的方法掛到小類的原型上。

4、建造者模式

將一個復雜對象的構(gòu)建層與其表示層相互分離,,同樣的構(gòu)建過程可采用不同的表示。

工廠模式主要是為了創(chuàng)建對象實例或者類簇(抽象工廠),關心的是最終產(chǎn)出(創(chuàng)建)的是什么。不關心創(chuàng)建的過程,僅僅需要創(chuàng)建的最終結(jié)果。所以工廠模式得到的是對象實例或者類簇。而建造者模式再創(chuàng)建對象的時候更為復雜,雖然其目的也是創(chuàng)建對象,但是其更多的是關心創(chuàng)建的整個過程,甚至于創(chuàng)建對象的每一個細節(jié),比如創(chuàng)建一個人,我們不僅要得到人的實例,還要關心穿什么衣服,男的女的,興趣愛好等等。

舉例子:創(chuàng)建一個求職者。我們先創(chuàng)建三個類,Human,Named,Work類。然后在建造者類中調(diào)用這三個類的組合,創(chuàng)建一個完整的應聘者對象。

var Person=function(name,work){ var _person=new Human(); _person.name=new Named(name); _person.work=new Work(work); return _person; }

在建造者模式中將創(chuàng)建的對象類模塊化,這樣使得每個模塊都可以得到靈活的運用與高質(zhì)量的復用。但是如果對象粒度很小,或者模塊間復用率很低且變動不大,我們最好還是創(chuàng)建整體對象。

5、原型模式

用原型實例指向創(chuàng)建者對象的類,使用于創(chuàng)建新的對象的類共享原型對象的屬性以及方法。

原型拓展:就是在prototype上進行拓展。

 

6、單例模式

只允許實例化對象一次。,有時我們也用一個對象來規(guī)劃一個命名空間,井井有條的管理對象上的屬性和方法。

var sing=(function(){ var instance=null; function Single(){} return function(){ if(!instance){ instance=Single; } return instance; } })();

 

7、外觀模式

//外觀模式:為一組復雜的子系統(tǒng)接口提供一個更高級的統(tǒng)一接口,通過這個接口使得對子系統(tǒng)接口的訪問更加容易。在JavaScript中,有時也會用于對底層結(jié)構(gòu)兼容性做統(tǒng)一封裝來簡化用戶使用。 //實現(xiàn) function addEvent(dom,type,fn){ if(dom.addEventListener){ dom.addEventListener(type,fn,false); }else if(dom.attachEvent){ dom.attachEvent("on"+type,fn); }else{ dom["on"+type]=fn; } }

 

8、適配器模式

//適配器模式:將一個類(對象)的接口(方法或者屬性)轉(zhuǎn)化為另一個接口,以滿足用戶的需求,使類之間的接口的不兼容問題通過適配器得以解決。 //舉例子:其實就是為了兩個代碼庫所寫的代碼兼容運行而書寫的額外代碼。這樣我們就不需要特意地重寫以前的功能代碼了。 //參數(shù)適配器:比如某個函數(shù)要傳入很多參數(shù) function dosomething(name,title,age,color,size,prize){}; dosomething(obj){}; dosomething(obj){ var _adapter={ name:"me", title:"設計", age:24, color:"pink", } }

 


  本文關鍵詞:JavaScript設計模式,由筆耕文化傳播整理發(fā)布。



本文編號:339356

資料下載
論文發(fā)表

本文鏈接:http://sikaile.net/wenshubaike/mishujinen/339356.html


Copyright(c)文論論文網(wǎng)All Rights Reserved | 網(wǎng)站地圖 |

版權申明:資料由用戶eb735***提供,本站僅收錄摘要或目錄,作者需要刪除請E-mail郵箱bigeng88@qq.com
91人妻丝袜一区二区三区| 老富婆找帅哥按摩抠逼视频| 国产精品伦一区二区三区在线| 日木乱偷人妻中文字幕在线| 欧美日韩校园春色激情偷拍| 一区二区三区亚洲国产| 精品高清美女精品国产区| 亚洲日本中文字幕视频在线观看| 亚洲熟女乱色一区二区三区| 亚洲一区二区三区中文久久| 在线观看视频日韩精品| 91日韩欧美中文字幕| 亚洲性生活一区二区三区| 免费观看在线午夜视频| 国产一区欧美一区日韩一区| 免费大片黄在线观看日本| 激情亚洲内射一区二区三区| 国产av精品高清一区二区三区| 欧美又黑又粗大又硬又爽| 国产乱久久亚洲国产精品| 国产亚洲精品久久久优势| 中文字幕日韩欧美亚洲午夜| 在线免费不卡亚洲国产| 国产成人午夜在线视频| 99精品人妻少妇一区二区人人妻| 大香蕉网国产在线观看av| 青青操视频在线观看国产| 国产精品日韩欧美第一页| 91天堂免费在线观看| 夫妻性生活动态图视频| 日韩精品视频一二三区| 99热中文字幕在线精品| 日本一本在线免费福利| 91日韩在线观看你懂的| 91精品国产av一区二区| 亚洲天堂精品在线视频| 日本欧美视频在线观看免费 | 麻豆一区二区三区精品视频| 欧美黑人暴力猛交精品| 日韩免费成人福利在线| 午夜国产精品国自产拍av|