這篇文章主要講解了如何使用javascript中的訪問者模式,內(nèi)容清晰明了,對此有興趣的小伙伴可以學(xué)習(xí)一下,相信大家閱讀完之后會有幫助。
創(chuàng)新互聯(lián)建站是一家專注于成都網(wǎng)站建設(shè)、網(wǎng)站制作與策劃設(shè)計,華龍網(wǎng)站建設(shè)哪家好?創(chuàng)新互聯(lián)建站做網(wǎng)站,專注于網(wǎng)站建設(shè)十年,網(wǎng)設(shè)計領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:華龍等地區(qū)。華龍做網(wǎng)站價格咨詢:028-86922220介紹:訪問者模式比較復(fù)雜,它包含訪問者和被訪問元素兩個主要組成部分,這些被訪問的元素通常具有不同的類型,且不同的訪問者可以對他們進(jìn)行不同的訪問操作。訪問者模式的主要目的是將數(shù)據(jù)結(jié)構(gòu)與數(shù)據(jù)操作相分離。
定義:提供一個作用于某對象結(jié)構(gòu)中的個元素的操作表示,它使得可以再不改變各元素的類的前提下定義作用于這些元素的新操作。訪問者模式是一種對象行為型模式
場景:使用PC結(jié)構(gòu)demo來解釋下訪問者模式
示例:
var Keyboard = function(){ this.accept = function(computerPartVisitor){ computerPartVisitor.visit(this); } } var Monitor = function(){ this.accept = function(computerPartVisitor){ computerPartVisitor.visit(this); } } var Mouse = function(){ this.accept = function(computerPartVisitor){ computerPartVisitor.visit(this); } } var Computer = function(){ var parts = [new Keyboard(), new Monitor(), new Mouse()]; this.accept = function(computerPartVisitor){ computerPartVisitor.visit(this); _acceptAll(computerPartVisitor); } var _acceptAll = function(computerPartVisitor){ parts.map(function(item){ item.accept(computerPartVisitor) }); } } var ComputerPartDisplayVisitor = function(){ this.visit = function(item){ if(item.constructor == Keyboard){ console.log("Displaying Keyboard."); }else if(item.constructor == Monitor){ console.log("Displaying Monitor."); }else if(item.constructor == Mouse){ console.log("Displaying Mouse."); }else if(item.constructor == Computer){ console.log("Displaying Computer."); }else{ console.log("Error"); } } } var computer = new Computer(); computer.accept(new ComputerPartDisplayVisitor()); // Displaying Computer. // Displaying Keyboard. // Displaying Monitor. // Displaying Mouse.