這篇文章主要講解了如何使用javascript中的訪問(wèn)者模式,內(nèi)容清晰明了,對(duì)此有興趣的小伙伴可以學(xué)習(xí)一下,相信大家閱讀完之后會(huì)有幫助。

創(chuàng)新互聯(lián)始終致力于在企業(yè)網(wǎng)站建設(shè)領(lǐng)域發(fā)展。秉承“創(chuàng)新、求實(shí)、誠(chéng)信、拼搏”的企業(yè)精神,致力為企業(yè)提供全面的網(wǎng)絡(luò)宣傳與技術(shù)應(yīng)用整體策劃方案,為企業(yè)提供包括“網(wǎng)站建設(shè)、響應(yīng)式網(wǎng)站建設(shè)、手機(jī)網(wǎng)站建設(shè)、微信網(wǎng)站建設(shè)、小程序開(kāi)發(fā)、電子商務(wù)商城網(wǎng)站建設(shè)、平臺(tái)網(wǎng)站建設(shè)秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長(zhǎng),共同發(fā)展。
介紹:訪問(wèn)者模式比較復(fù)雜,它包含訪問(wèn)者和被訪問(wèn)元素兩個(gè)主要組成部分,這些被訪問(wèn)的元素通常具有不同的類型,且不同的訪問(wèn)者可以對(duì)他們進(jìn)行不同的訪問(wèn)操作。訪問(wèn)者模式的主要目的是將數(shù)據(jù)結(jié)構(gòu)與數(shù)據(jù)操作相分離。
定義:提供一個(gè)作用于某對(duì)象結(jié)構(gòu)中的個(gè)元素的操作表示,它使得可以再不改變各元素的類的前提下定義作用于這些元素的新操作。訪問(wèn)者模式是一種對(duì)象行為型模式
場(chǎng)景:使用PC結(jié)構(gòu)demo來(lái)解釋下訪問(wèn)者模式
示例:
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.這個(gè)模式比較復(fù)雜,我們先介紹下組成:
訪問(wèn)者模式總結(jié):
優(yōu)點(diǎn):
* 增加新的訪問(wèn)操作便捷,只需要加一個(gè)新的訪問(wèn)者類。
* 將有關(guān)原色對(duì)象的訪問(wèn)行為集合到一個(gè)訪問(wèn)者對(duì)象中,類的職責(zé)更清晰。
* 讓用戶在不修改現(xiàn)有元素層次結(jié)構(gòu)的情況下,定義作用于該層次結(jié)構(gòu)的操作。
缺點(diǎn):
* 增加新的元素類很困難,在訪問(wèn)者模式下,每增加一個(gè)新的元素,對(duì)應(yīng)要增加訪問(wèn)者中的操作。
* 破壞封裝。訪問(wèn)者模式要求訪問(wèn)者對(duì)象訪問(wèn)并調(diào)用每一個(gè)元素對(duì)象的操作,這意味著元素必須暴露一些內(nèi)部操作和內(nèi)部狀態(tài)。
適用場(chǎng)景:
* 一個(gè)對(duì)象結(jié)構(gòu)包含多個(gè)類型的對(duì)象,希望對(duì)這些對(duì)象實(shí)施一些依賴其具體類型的操作。
* 需要對(duì)一個(gè)對(duì)象結(jié)構(gòu)中的對(duì)象進(jìn)行橫多不同的并且不相關(guān)的操作,而且需要避免讓這些操作污染這些對(duì)象的類。
* 對(duì)象結(jié)構(gòu)中對(duì)象對(duì)應(yīng)的類很少改變,但經(jīng)常需要再次對(duì)象結(jié)構(gòu)上定義新的操作。
看完上述內(nèi)容,是不是對(duì)如何使用javascript中的訪問(wèn)者模式有進(jìn)一步的了解,如果還想學(xué)習(xí)更多內(nèi)容,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。
本文標(biāo)題:如何使用javascript中的訪問(wèn)者模式
網(wǎng)站路徑:http://www.chinadenli.net/article30/pgdeso.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供App設(shè)計(jì)、網(wǎng)站排名、標(biāo)簽優(yōu)化、、云服務(wù)器、手機(jī)網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)