您好,登錄后才能下訂單哦!
今天小編給大家分享一下web訪問者模式結構是怎樣的的相關知識點,內(nèi)容詳細,邏輯清晰,相信大部分人都還太了解這方面的知識,所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。
結構
面向對象中封裝的想法是將數(shù)據(jù)和操作數(shù)據(jù)的方法集中在一個類中,以達到高內(nèi)聚低耦合的效果。但是有時也會希望將目的相關或相同的針對不同類型的操作集中到一個類中。這種方式就是訪問者模式,它的結構如下:
訪問者類Visitor定義兩個不同的接口分別用于訪問構造圖下半部分的兩個Element的派生類。訪問者類Visitor通過不同的方法決定它的派生類可以訪問的對象類型。
具象訪問者類ConcreteVisitor類負責具體實現(xiàn)一組針對訪問者類指定的對象的具體操作。每個訪問方法往往是某個更大算法的一部分,所以經(jīng)常會需要使用具象訪問者類的數(shù)據(jù)成員來保存這個算法的信息。由于需求的不同,并不要求每個具象類都必須實現(xiàn)所有的訪問方法。
元素類Element作為要素類的基類,首先應該有自己的功能,然后才是為繼承層次上的具象要素類定義用來接納訪問者類的accpet方法。也可以定義一個只有accept方法的抽象類,但是個人覺得這多少有些本末倒置的感覺。要素類的類結構還是應該按照其本身的需求進行設計,而不是為了訪問者模式這么一個實現(xiàn)層面的便利而改變。
具象要素類ConcreteElement作為訪問者的訪問對象,負責招待訪問者。在它的accept方法中會調(diào)用Visitor的對應方法。這個過程可以看作是將具象Visitor類和訪問對象放到一起之后,訪問對象和Visitor的訪問方法之間實現(xiàn)自動匹配。這也可以認為是一種重載,是訪問者模式最為神奇的地方。
對象結構ObjectStructure只是一個提法,并不存在這么個類。之所以需要這個角色,個人覺得可以這樣理解:對某個數(shù)據(jù)結構進行的處理總可以看作是數(shù)據(jù)結構遍歷和處理數(shù)據(jù)的結合。Visitor類只負責處理,那么就需要某個角色來推進遍歷動作,而這個角色就是ObjectStructrue。由于在整個遍歷、處理的過程中Visitor始終處于被動地位,因此也就不在乎ObjectStructure具體是什么結構了。而這個不在乎正是面向對象中的解耦合。
以上就是“web訪問者模式結構是怎樣的”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會為大家更新不同的知識,如果還想學習更多的知識,請關注億速云行業(yè)資訊頻道。
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內(nèi)容。