欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

JS設(shè)計(jì)模式之訪問(wèn)者模式定義與用法分析

 更新時(shí)間:2018年02月05日 08:44:28   作者:itpinpai  
這篇文章主要介紹了JS設(shè)計(jì)模式之訪問(wèn)者模式定義與用法,結(jié)合實(shí)例形式分析了javascript設(shè)計(jì)模式中訪問(wèn)者模式的概念、功能、應(yīng)用場(chǎng)景及使用方法,需要的朋友可以參考下

本文實(shí)例講述了JS設(shè)計(jì)模式之訪問(wèn)者模式定義與用法。分享給大家供大家參考,具體如下:

在訪問(wèn)者模式中,主要包括下面幾個(gè)角色

1、抽象訪問(wèn)者:抽象類或者接口,聲明訪問(wèn)者可以訪問(wèn)哪些元素,具體到程序中就是visit方法中的參數(shù)定義哪些對(duì)象是可以被訪問(wèn)的。
2、訪問(wèn)者:實(shí)現(xiàn)抽象訪問(wèn)者所聲明的方法,它影響到訪問(wèn)者訪問(wèn)到一個(gè)類后該干什么,要做什么事情。
3、抽象元素類:接口或者抽象類,聲明接受哪一類訪問(wèn)者訪問(wèn),程序上是通過(guò)accept方法中的參數(shù)來(lái)定義的。抽象元素一般有兩類方法,一部分是本身的業(yè)務(wù)邏輯,另外就是允許接收哪類訪問(wèn)者來(lái)訪問(wèn)。
4、元素類:實(shí)現(xiàn)抽象元素類所聲明的accept方法,通常都是visitor.visit(this),基本上已經(jīng)形成一種定式了。
5、結(jié)構(gòu)對(duì)象:一個(gè)元素的容器,一般包含一個(gè)容納多個(gè)不同類、不同接口的容器,如List、Set、Map等,在項(xiàng)目中一般很少抽象出這個(gè)角色。

實(shí)現(xiàn)代碼:

// 訪問(wèn)者
function Visitor() {
 this.visit = function( concreteElement ) {
 concreteElement.doSomething();
 }
}
// 元素類
function ConceteElement() {
 this.doSomething = function() {
 console.log("這是一個(gè)具體元素");
 }
 this.accept = function( visitor ) {
 visitor.visit(this);
 }
}
// Client
var ele = new ConceteElement();
var v = new Visitor();
ele.accept( v );

訪問(wèn)者模式的優(yōu)點(diǎn)

1、符合單一職責(zé)原則:凡是適用訪問(wèn)者模式的場(chǎng)景中,元素類中需要封裝在訪問(wèn)者中的操作必定是與元素類本身關(guān)系不大且是易變的操作,使用訪問(wèn)者模式一方面符合單一職責(zé)原則,另一方面,因?yàn)楸环庋b的操作通常來(lái)說(shuō)都是易變的,所以當(dāng)發(fā)生變化時(shí),就可以在不改變?cè)仡惐旧淼那疤嵯?,?shí)現(xiàn)對(duì)變化部分的擴(kuò)展。

2、擴(kuò)展性良好:元素類可以通過(guò)接受不同的訪問(wèn)者來(lái)實(shí)現(xiàn)對(duì)不同操作的擴(kuò)展。

訪問(wèn)者模式的適用場(chǎng)景

1、假如一個(gè)對(duì)象中存在著一些與本對(duì)象不相干(或者關(guān)系較弱)的操作,為了避免這些操作污染這個(gè)對(duì)象,則可以使用訪問(wèn)者模式來(lái)把這些操作封裝到訪問(wèn)者中去。

2、假如一組對(duì)象中,存在著相似的操作,為了避免出現(xiàn)大量重復(fù)的代碼,也可以將這些重復(fù)的操作封裝到訪問(wèn)者中去。

更多關(guān)于JavaScript相關(guān)內(nèi)容可查看本站專題:《javascript面向?qū)ο笕腴T(mén)教程》、《JavaScript切換特效與技巧總結(jié)》、《JavaScript查找算法技巧總結(jié)》、《JavaScript錯(cuò)誤與調(diào)試技巧總結(jié)》、《JavaScript數(shù)據(jù)結(jié)構(gòu)與算法技巧總結(jié)》、《JavaScript遍歷算法與技巧總結(jié)》及《JavaScript數(shù)學(xué)運(yùn)算用法總結(jié)

希望本文所述對(duì)大家JavaScript程序設(shè)計(jì)有所幫助。

相關(guān)文章

  • js常用代碼段收集

    js常用代碼段收集

    以下是平時(shí)收集的幾個(gè)常用代碼段,大多數(shù)是從網(wǎng)上搜集而來(lái)。也均為未找到是誰(shuí)誰(shuí)原創(chuàng),是否允許轉(zhuǎn)載等要求, 所以如果看到的朋友發(fā)現(xiàn)其中有些代碼是自己寫(xiě)的,還請(qǐng)?jiān)徳谙罗D(zhuǎn)帖出來(lái)。
    2011-10-10
  • 基于javascript的無(wú)縫滾動(dòng)動(dòng)畫(huà)1

    基于javascript的無(wú)縫滾動(dòng)動(dòng)畫(huà)1

    這篇文章主要介紹了基于javascript的無(wú)縫滾動(dòng)動(dòng)畫(huà)實(shí)現(xiàn),文章通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-08-08
  • 如何實(shí)現(xiàn)chrome瀏覽器關(guān)閉頁(yè)面時(shí)彈出“確定要離開(kāi)此面嗎?”

    如何實(shí)現(xiàn)chrome瀏覽器關(guān)閉頁(yè)面時(shí)彈出“確定要離開(kāi)此面嗎?”

    這篇文章主要介紹了如何實(shí)現(xiàn)chrome瀏覽器關(guān)閉頁(yè)面時(shí)彈出“確定要離開(kāi)此面嗎?”的方法以及相關(guān)資料,需要的朋友可以參考下
    2015-03-03
  • JavaScript深入介紹WebAPI的用法

    JavaScript深入介紹WebAPI的用法

    JS分成三個(gè)大的部分:ECMAScript、DOM API、BOM API,其中:ECMAScript是讓前端開(kāi)發(fā)建立基本的編程思維。但是要想真正來(lái)寫(xiě)一個(gè)更加復(fù)雜的有交互式的頁(yè)面,還需要WebAPI的支持,相當(dāng)于把后端編程實(shí)現(xiàn)成前端交互。DOM+BOM就組成了WebAPI
    2022-06-06
  • JS模式之簡(jiǎn)單的訂閱者和發(fā)布者模式完整實(shí)例

    JS模式之簡(jiǎn)單的訂閱者和發(fā)布者模式完整實(shí)例

    這篇文章主要介紹了JS模式之簡(jiǎn)單的訂閱者和發(fā)布者模式,以一個(gè)完整實(shí)例形式詳細(xì)分析了JS訂閱者和發(fā)布者模式基本實(shí)現(xiàn)技巧,需要的朋友可以參考下
    2015-06-06
  • js中自定義方法實(shí)現(xiàn)停留幾秒sleep

    js中自定義方法實(shí)現(xiàn)停留幾秒sleep

    js中不存在自帶的sleep方法,要想休眠要自己定義個(gè)方法,需要的朋友可以參考下
    2014-07-07
  • Bootstrap每天必學(xué)之表格

    Bootstrap每天必學(xué)之表格

    Bootstrap每天必學(xué)之表格,向大家分享了幾種最為常用的各種列表展示,希望大家喜歡。
    2015-11-11
  • 淺談JS繼承_借用構(gòu)造函數(shù) & 組合式繼承

    淺談JS繼承_借用構(gòu)造函數(shù) & 組合式繼承

    下面小編就為大家?guī)?lái)一篇淺談JS繼承_借用構(gòu)造函數(shù) & 組合式繼承。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2016-08-08
  • 純JS實(shí)現(xiàn)彈性導(dǎo)航條效果

    純JS實(shí)現(xiàn)彈性導(dǎo)航條效果

    本文主要介紹了純JS實(shí)現(xiàn)彈性導(dǎo)航條效果的實(shí)例,具有很好的參考價(jià)值。下面跟著小編一起來(lái)看下吧
    2017-03-03
  • 關(guān)于JavaScript中name的意義沖突示例介紹

    關(guān)于JavaScript中name的意義沖突示例介紹

    這篇文章主要介紹了關(guān)于JavaScript中name的意義沖突,需要的朋友可以參考下
    2014-05-05

最新評(píng)論