欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

如何使用javascript中的狀態(tài)模式

這篇文章主要講解了如何使用javascript中的狀態(tài)模式,內(nèi)容清晰明了,對此有興趣的小伙伴可以學(xué)習(xí)一下,相信大家閱讀完之后會有幫助。

創(chuàng)新互聯(lián)公司2013年成立,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項目成都網(wǎng)站制作、網(wǎng)站設(shè)計網(wǎng)站策劃,項目實施與項目整合能力。我們以讓每一個夢想脫穎而出為使命,1280元貴南做網(wǎng)站,已為上家服務(wù),為貴南各地企業(yè)和個人服務(wù),聯(lián)系電話:18980820575

介紹:狀態(tài)模式用于解決系統(tǒng)中復(fù)雜對象的狀態(tài)轉(zhuǎn)換以及不同狀態(tài)下行為的封裝問題。狀態(tài)模式將一個對象的狀態(tài)從該對象中分離出來,使得對象狀態(tài)可以靈活變化。

定義:允許一個對象在其內(nèi)部狀態(tài)改變時改變它的行為,對象看起來似乎修改了它的類,其別名為狀態(tài)對象,狀態(tài)模式是一種對象行為型模式。

場景:在很多情況下我們的頁面需要做一些狀態(tài)判斷,是否注冊,是否登錄,剩余金額是否大于500等等,我們通常是在組件中通過if…else…來做不同的處理,這種方式耦合嚴(yán)重不滿足單一職責(zé)原則。如何解決這個問題呢,這一節(jié)我們利用狀態(tài)模式來解決對象的狀態(tài)切換。

示例:

var Dialog = function(){
  var _state = null;
 
  this.setState = function(state){
    _state = state;
  }
  this.getState = function(){
    return _state;
  }
}
 
var ShowState = function(){
  this.doAction = function(dialog){
    console.log("對Dialog設(shè)置顯示狀態(tài):");
    dialog.setState(this);
  }
  this.toString = function(){
    console.log("顯示中......");
  }
}
 
var HideState = function(){
  this.doAction = function(dialog){
    console.log("對Dialog設(shè)置隱藏狀態(tài):");
    dialog.setState(this);
  }
  this.toString = function(){
    console.log("已隱藏......");
  }
}
 
var dialog = new Dialog();
 
var showState = new ShowState();
var hideState = new HideState();
 
showState.doAction(dialog);
//對Dialog設(shè)置顯示狀態(tài):
dialog.getState().toString();
//顯示中......
hideState.doAction(dialog);
//對Dialog設(shè)置隱藏狀態(tài)
dialog.getState().toString();
//已隱藏......

這個例子里Dialog對象有兩種狀態(tài),顯示和隱藏,我把兩種狀態(tài)提取出來,使得狀態(tài)的管理更加靈活。在這個例子里面Dialog稱之為環(huán)境類,環(huán)境類又稱為上下文類,他擁有多種狀態(tài)。環(huán)境類內(nèi)部需要維護一個state對象用來定義當(dāng)前狀態(tài)。HideState,ShowState稱之為狀態(tài)類,對應(yīng)環(huán)境類的一個具體狀態(tài),toString稱之為狀態(tài)類的行為,每一個狀態(tài)類的行為都有所不同。

狀態(tài)模式總結(jié):

優(yōu)點:
* 封裝了狀態(tài)的轉(zhuǎn)換規(guī)則,在狀態(tài)模式中可以將狀態(tài)的轉(zhuǎn)換代碼封裝在環(huán)境類或者具體狀態(tài)類中,方便對狀態(tài)轉(zhuǎn)換代碼進行管理。
* 將所有與某個狀態(tài)有關(guān)的行為放到一個類中,只需要注入一個不同的狀態(tài)對象即可使環(huán)境對象擁有不同行為

缺點:
* 狀態(tài)模式的使用必然會增加系統(tǒng)中狀態(tài)類的數(shù)量,導(dǎo)致開銷變大。
* 結(jié)構(gòu)設(shè)計交付為咋,使用不當(dāng)會導(dǎo)致程序結(jié)構(gòu)和代碼混亂,增加系統(tǒng)設(shè)計難度。

適用場景:
* 對象的行為依賴于它的狀態(tài),狀態(tài)改變將導(dǎo)致行為的變化
* 在代碼中包含大量與對象狀態(tài)有關(guān)的條件語句

看完上述內(nèi)容,是不是對如何使用javascript中的狀態(tài)模式有進一步的了解,如果還想學(xué)習(xí)更多內(nèi)容,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。

當(dāng)前文章:如何使用javascript中的狀態(tài)模式
路徑分享:http://aaarwkj.com/article42/igjcec.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供App設(shè)計、定制開發(fā)、微信公眾號、軟件開發(fā)、網(wǎng)站導(dǎo)航域名注冊

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站托管運營
日韩精品欧美精品视频一区| 亚洲午夜一区二区不卡| 国产高潮呻吟久久av| 日韩欧美亚洲制服丝袜| 久久亚洲精品中文字幕一| 老司机精品成人免费视频| 亚洲区自拍偷拍一区二区| 91麻豆精品一二三区在线| 很黄很刺激的视频中文字幕| 一卡二卡精品在线免费| 国产日韩综合精品一区| 人妻系列少妇人妻偷人| 最新日韩欧美不卡一二三区| 偷拍丝袜美腿在线观看| 黄片欧美精品在线观看| 亚洲三级黄片在线观看| 97超碰国产在线观看| 九九九热免费在线观看| 97成品视频在线播放| 日韩高清亚洲一区二区| 丁香色婷婷国产精品视频| 国产三级国产精品国产专播| 人妻一区二区三区中文字幕| 最新中文字幕成人在线观看| 乱码人妻精品一区二区三区| 亚洲天堂av日韩在线| 国产精品五月婷婷六月丁香| 亚洲av丰满熟妇在线观看| 欧美日韩在线不卡成人| 亚洲日本一区二区高清在线| 国产不卡高清视频在线| 欧美激情三级一区二区| 色哟哟国产精品一区自拍| 成人国产视频免费观看| 深夜福利视频一区二区| 成人黄片免费在线播放| 日本免费观看一区久久| 永久免费成人在线视频| 黄色日韩大片在线观看| 丁香六月色婷婷亚洲激情| 亚洲av天堂一区二区香蕉|