访问者模式(python)
来源:互联网 发布:东南大学翻译硕士 知乎 编辑:程序博客网 时间:2024/06/07 11:09
"""访问者模式状态模式复杂版,状态模式是一个复杂对象有多个分支,然后把这些分支抽象成状态,在运行时根据状态来执行;而访问者模式是多个复杂对象有同样多的分支,且复杂对象的个数相对稳定,不然到时候就修改该分支状态类的代码"""from abc import ABCMeta, abstractmethodclass Person(object): __metaclass__ = ABCMeta def __init__(self, name): self.name = name pass @abstractmethod def display(self, state): passclass Man(Person): def __init__(self, name): super(Man, self).__init__(name) def display(self, state): state.man_display(self)class Woman(Person): def __init__(self, name): super(Woman, self).__init__(name) def display(self, state): state.woman_display(self)class State(object): __metaclass__ = ABCMeta def __init__(self): pass @abstractmethod def man_display(self, man): pass @abstractmethod def woman_display(self, woman): passclass Marry(State): def __init__(self): super(Marry, self).__init__() def man_display(self, man): print("男人结婚如进坟墓") print("{0},你好可伶".format(man.name)) print("") def woman_display(self, woman): print("女人结婚好幸福") print("{0},你好幸福".format(woman.name)) print("")class Work(State): def __init__(self,): super(Work, self).__init__() def man_display(self, man): print("男人工作说起来都是泪") print("{0},你好可伶".format(man.name)) print("") def woman_display(self, woman): print("女人工作就是玩") print("{0},你好幸福".format(woman.name)) print("")class Creator(object): def __init__(self): self.person_list = [] pass def append(self, person): self.person_list.append(person) def display(self, state): for person in self.person_list: person.display(state)if __name__ == '__main__': creator = Creator() creator.append(Man("张三")) creator.append(Woman("翠翠")) marry = Marry() work = Work() creator.display(marry) creator.display(work)
0 0
- 访问者模式(python)
- 访问者模式(python)
- python设计模式(访问者模式)
- Vistor访问者模式(C++访问者模式)
- 访问者(Visitor)模式
- 访问者模式(Visitor)
- Visitor(访问者模式)
- 访问者模式(Visitor)
- 访问者模式(Visitor)
- 访问者(Visitor)模式
- 访问者(Visitor)模式
- 访问者(visitor)模式
- 访问者模式(Visitor)
- 访问者模式(Visitor)
- 访问者模式(Visitor)
- 访问者模式(Visitor)
- (19)访问者模式
- 访问者模式(Visitor)
- 怦然心动
- html文件结构
- C - Dividing
- 删除指定目录下的文件(不包括次目录)
- js或jquery实现页面打印可局部打印
- 访问者模式(python)
- Qt中两个窗口相互操作
- [BZOJ1923][Sdoi2010]外星千足虫(高斯消元)
- java.util.ConcurrentModificationException
- ==与===
- Python pip 国内镜像大全及使用办法
- opencv3.0分析
- spring学习笔记---Jackson的使用和定制
- fastjson 多层嵌套的问题