from abc importabcmeta, abstractmethod
#訪問模式:封裝一些作用於某種資料結構中各元素的操作,它可以在不改變資料結構的前提下定義作用於這些元素的新的操作
#三個角色:訪問者、資料節點、物件結構
class datanode(metaclass=abcmeta):
"""資料結構類
"""def
access(self, visitor):
"""接受訪問者的訪問
"""visitor.visit(self)
class visitor(metaclass=abcmeta):
"""訪問者
"""@abstractmethod
defvisit(self, data):
"""對資料物件的訪問操作
"""pass
class
objectstructure:
"""資料結構的管理類,也是資料物件的容器,可遍歷容器內的所有元素
"""def
__init__
(self):
self.
__datas =
defadd(self, dataelement):
self.
__datas
defaction(self, visitor):
"""進行資料訪問的操作
"""for data in self.__datas
: data.accept(visitor)
設計模式之訪問者模式
先看一下下面這段 class person public string getaction public void setaction string action public void getconclusion else if action exciting else if action gri...
設計模式之訪問者模式
我們去銀行櫃檯辦業務,一般情況下會開幾個個人業務櫃檯的,你去其中任何乙個櫃檯辦理都是可以的。我們的訪問者模式可以很好付諸在這個場景中 對於銀行櫃檯來說,他們是不用變化的,就是說今天和明天提供個人業務的櫃檯是不需要有變化的。而我們作為訪問者,今天來銀行可能是取消費流水,明天來銀行可能是去辦理手機銀行業...
設計模式之訪問者模式
定義 表示一介作用於某個物件結構中的各元素的操作。它使你可以在不改變各元素的類的前提下定義作用於這些元素的新操作。結構圖 示例 public inte ce vistor public class concretevisitor1 implements vistor override public ...