91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

JS設計模式之訪問者模式定義與用法分析

發布時間:2020-10-15 22:08:40 來源:腳本之家 閱讀:176 作者:itpinpai 欄目:web開發

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

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

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

實現代碼:

// 訪問者
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 );

訪問者模式的優點

1、符合單一職責原則:凡是適用訪問者模式的場景中,元素類中需要封裝在訪問者中的操作必定是與元素類本身關系不大且是易變的操作,使用訪問者模式一方面符合單一職責原則,另一方面,因為被封裝的操作通常來說都是易變的,所以當發生變化時,就可以在不改變元素類本身的前提下,實現對變化部分的擴展。

2、擴展性良好:元素類可以通過接受不同的訪問者來實現對不同操作的擴展。

訪問者模式的適用場景

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

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

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

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

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

东平县| 微博| 甘洛县| 神池县| 浑源县| 福海县| 周至县| 德保县| 林口县| 师宗县| 怀安县| 泸定县| 青河县| 高平市| 武乡县| 抚顺县| 长沙市| 翁源县| 信宜市| 浠水县| 武穴市| 天门市| 东乡县| 永康市| 泗洪县| 山阴县| 井陉县| 班玛县| 南投市| 资中县| 安乡县| 多伦县| 铜梁县| 宁海县| 三穗县| 莱阳市| 曲水县| 溧水县| 镇雄县| 邯郸县| 姜堰市|