访问者模式:封装一些作用于某种数据结构中各元素的操作,它可以在不改变数据结构的前提下定义作用于这些元素的新的操作。
核心思想:可以在不改变数据结构的前提下定义作用于这些元素的操作,将数据结构和操作进行解耦,而且能更方便的拓展操作
from abc import ABCMeta,abstractmethod
class MyBook:
def getName(self):
return "《我的第一本书》"
class Reader(metaclass=ABCMeta):
@abstractmethod
def read(self,book):
pass
class Student(Reader):
def read(self,book):
print("学生读%s,觉得写得很通俗易懂"%book.getName())
class OtherFriend(Reader):
def read(self,book):
print("其他人读%s,故事很精彩"%book.getName())
def test():
book = MyBook()
fans = [Student(),OtherFriend()]
for fan in fans:
fan.read(book)
test()
运行结构;
学生读《我的第一本书》,觉得写得很通俗易懂
其他人读《我的第一本书》,故事很精彩
aaa