亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

您的位置:首頁技術文章
文章詳情頁

javascript設計模式 ? 狀態模式原理與用法實例分析

瀏覽:58日期:2023-11-02 15:34:33

本文實例講述了javascript設計模式 ? 狀態模式原理與用法。分享給大家供大家參考,具體如下:

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

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

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

示例:

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設置顯示狀態:'); dialog.setState(this); } this.toString = function(){ console.log('顯示中......'); }} var HideState = function(){ this.doAction = function(dialog){ console.log('對Dialog設置隱藏狀態:'); dialog.setState(this); } this.toString = function(){ console.log('已隱藏......'); }} var dialog = new Dialog(); var showState = new ShowState();var hideState = new HideState(); showState.doAction(dialog);//對Dialog設置顯示狀態:dialog.getState().toString();//顯示中......hideState.doAction(dialog);//對Dialog設置隱藏狀態dialog.getState().toString();//已隱藏......

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

狀態模式總結:

優點:* 封裝了狀態的轉換規則,在狀態模式中可以將狀態的轉換代碼封裝在環境類或者具體狀態類中,方便對狀態轉換代碼進行管理。* 將所有與某個狀態有關的行為放到一個類中,只需要注入一個不同的狀態對象即可使環境對象擁有不同行為

缺點:* 狀態模式的使用必然會增加系統中狀態類的數量,導致開銷變大。* 結構設計交付為咋,使用不當會導致程序結構和代碼混亂,增加系統設計難度。

適用場景:* 對象的行為依賴于它的狀態,狀態改變將導致行為的變化* 在代碼中包含大量與對象狀態有關的條件語句

感興趣的朋友可以使用在線HTML/CSS/JavaScript代碼運行工具:http://tools.jb51.net/code/HtmlJsRun測試上述代碼運行效果。

更多關于JavaScript相關內容感興趣的讀者可查看本站專題:《javascript面向對象入門教程》、《JavaScript錯誤與調試技巧總結》、《JavaScript數據結構與算法技巧總結》、《JavaScript遍歷算法與技巧總結》及《JavaScript數學運算用法總結》

希望本文所述對大家JavaScript程序設計有所幫助。

標簽: JavaScript
相關文章:
主站蜘蛛池模板: 色综合久 | 亚洲成人黄色在线 | 一级欧美一级日韩毛片99 | 欧美一二三区 | 香蕉视频网站在线观看 | 欧美日韩中文字幕在线手机版本 | 永久免费视频网站在线观看 | 亚洲三级影院 | 日韩高清在线不卡 | 日日夜夜爱爱 | 欧洲第一区第二区第三区 | 又刺激又黄的一级毛片 | 高清国产一级精品毛片基地 | 国产精品久久久久久久成人午夜 | 一本大道一卡2卡三卡4卡麻豆 | 911国产自产精品a | 精品国产精品a | 天天影视综合色 | 一区二区精品在线观看 | 中文国产成人精品久久水 | 国产亚洲人成网站在线观看不卡 | 玖草资源在线 | 日韩精品欧美亚洲高清有无 | 久久视频精品a线视频在线观看 | 精品国产欧美一区二区 | 免费在线看h | 999jjj在线播放 | 小明台湾成人永久免费看看 | 久久国产乱子伦精品免费一 | 欧美在线看欧美高清视频免费 | 韩国主播vip福利视频在线播放 | 在线观看网址入口2020国产 | 综合久久久久 | 久久福利在线 | 国产成人在线观看网站 | 一本久道在线 | 99亚洲精品高清一二区 | 中文乱码一二三四有限公司 | 一级做a爰片性色毛片男 | 日本一级毛片免费看 | 国产伦精一区二区三区 |