首页 > 代码库 > 访问者模式
访问者模式
模式说明
访问者模式即表示一个作用于某对象结构中的各元素的操作,它使我们可以在不改变各元素的类的前提下定义作用于这些元素的新操作。
模式结构图
程序示例
说明:男人、女人被成功、失败‘访问’的反应
代码:
# -*- coding: cp936 -*-class Person: def Accept(self,visitor): passclass Man(Person): def Accept(self,visitor): visitor.GetManConclusion(self)class Woman(Person): def Accept(self,visitor): visitor.GetWomanConclusion(self)class Action: def GetManConclusion(self,concreteElementA): pass def GetWomanConclusion(self,concreteElementB): passclass Success(Action): def GetManConclusion(self,concreteElementA): print "男人成功时,背后有个伟大的女人" def GetWomanConclusion(self,concreteElementB): print "女人成功时,背后有个不成功的男人"class Failure(Action): def GetManConclusion(self,concreteElementA): print "男人失败时,闷头喝酒,谁也不用劝" def GetWomanConclusion(self,concreteElementB): print "女人失败时,眼泪汪汪,谁也劝不了"#class ObjectStructure:# def __init__(self):# self.plist=[]# def Add(self,p):# self.plist=self.plist+[p]# def Display(self,act):# for p in self.plist:# p.Accept(act)#if __name__ == "__main__":# os = ObjectStructure()# os.Add(Man())# os.Add(Woman())# sc = Success()# os.Display(sc)# fl = Failure()# os.Display(fl)if __name__ == "__main__": man=Man() woman=Woman() sc =Success() fl =Failure() man.Accept(sc) woman.Accept(sc) man.Accept(fl) woman.Accept(fl)
运行结果:
参考来源:
http://www.cnblogs.com/chenssy/p/3679190.html
http://www.cnblogs.com/wuyuegb2312/archive/2013/04/09/3008320.html
http://www.cnblogs.com/java-my-life/archive/2012/06/14/2545381.html
访问者模式
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。