訪問者模式(python)

2021-07-25 23:34:49 字數 2243 閱讀 3350

"""

訪問者模式

狀態模式複雜版,狀態模式是乙個複雜物件有多個分支,然後把這些分支抽象成狀態,在執行時根據狀態來執行;

而訪問者模式是多個複雜物件有同樣多的分支,且複雜物件的個數相對穩定,不然到時候就修改該分支狀態類的**

"""from abc import abcmeta, abstractmethod

class

person

(object):

__metaclass__ = abcmeta

def__init__

(self, name):

self.name = name

pass

@abstractmethod

defdisplay

(self, state):

pass

class

man(person):

def__init__

(self, name):

super(man, self).__init__(name)

defdisplay

(self, state):

state.man_display(self)

class

woman

(person):

def__init__

(self, name):

super(woman, self).__init__(name)

defdisplay

(self, state):

state.woman_display(self)

class

state

(object):

__metaclass__ = abcmeta

def__init__

(self):

pass

@abstractmethod

defman_display

(self, man):

pass

@abstractmethod

defwoman_display

(self, woman):

pass

class

marry

(state):

def__init__

(self):

super(marry, self).__init__()

defman_display

(self, man):

print("男人結婚如進墳墓")

print(",你好可伶".format(man.name))

print("")

defwoman_display

(self, woman):

print("女人結婚好幸福")

print(",你好幸福".format(woman.name))

print("")

class

work

(state):

def__init__

(self,):

super(work, self).__init__()

defman_display

(self, man):

print("男人工作說起來都是淚")

print(",你好可伶".format(man.name))

print("")

defwoman_display

(self, woman):

print("女人工作就是玩")

print(",你好幸福".format(woman.name))

print("")

class

creator

(object):

def__init__

(self):

self.person_list =

pass

def(self, person):

defdisplay

(self, state):

for person in self.person_list:

person.display(state)

if __name__ == '__main__':

creator = creator()

marry = marry()

work = work()

creator.display(marry)

creator.display(work)

訪問者模式

訪問者模式 visitor pattern 訪問者模式是物件的行為模式。訪問者模式的目的是封裝一些施加於某種資料結構元素之上的操作。一旦這些操作需要修改的話,接受這個操作的資料結構則可以保持不變。一 問題 集合是大多數的系統都要處理的一種容器物件,它儲存了對其它物件的引用。一般情況下,在集合上採取的...

訪問者模式

行為模式中的訪問者模式 訪問者模式是物件的行為模式。訪問者模式的目的是封裝一些施加於某種資料結構元素之上的操作,一旦這些操作需要修改的話,接受這個操作的資料結構則可以保持不變。動機 類層次結構中可能經常由於引入新的操作,從而將型別變得脆弱。在軟體構建過程中,由於需求的改變,某些類層次結構中常常需要增...

訪問者模式

1.說明 namespace visitorspattern 象棋類 public abstract class chess public class redchess chess public class blackchess chess 在贏的情況下的狀態 public class win ac...