最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

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

在訪問者模式中,主要包括下面幾個角色

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

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

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

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

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

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

訪問者模式的適用場景

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

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

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

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

相關(guān)文章

最新評論

泽库县| 宁安市| 勃利县| 会昌县| 葫芦岛市| 安福县| 九江县| 宿迁市| 浑源县| 石景山区| 紫阳县| 长白| 昌吉市| 清镇市| 泸溪县| 临漳县| 无锡市| 香港 | 双江| 郯城县| 玉树县| 扎兰屯市| 遂川县| 辽宁省| 石屏县| 普陀区| 富锦市| 长葛市| 仁怀市| 英吉沙县| 上虞市| 神木县| 镇沅| 丹东市| 彰化市| 枝江市| 孟津县| 高陵县| 翁牛特旗| 平原县| 西贡区|