首页 > 代码库 > Python设计模式——外观模式
Python设计模式——外观模式
外观模式跟代理模式有点像,都是在client和目标的类之间建一个中间的类,client不直接调用目标的类,而是通过先调用中间类的方法,由中间类来实现怎么调用目标类。
代理模式用这种模式的目的是可以实现client和目标类不直接通信,使他们之间相互独立,这样就比较安全,因为client不知道目标类的存在。
外观模式的目的是通过建立一个中间类,把调用目标类的代码都封装好,例如有时候目标类有很多个,逐一得去调用它们会很麻烦,这样通过中间类封装好的接口,client的调用就好很简单
不适用外观模式的例子
#encoding=utf-8__author__ = ‘kevinlu1010@qq.com‘class A(): def run(self): print ‘A run‘ def jump(self): print ‘A jump‘class B(): def run(self): print ‘B run‘ def jump(self): print ‘B jump‘class C(): def run(self): print ‘C run‘ def jump(self): print ‘C jump‘if __name__==‘__main__‘: a=A() b=B() c=C() for item in (‘a‘,‘b‘,‘c‘): locals().get(item).run() for item in (‘a‘,‘b‘,‘c‘): locals().get(item).jump()
使用外观模式
#encoding=utf-8__author__ = ‘kevinlu1010@qq.com‘class A(): def run(self): print ‘A run‘ def jump(self): print ‘A jump‘class B(): def run(self): print ‘B run‘ def jump(self): print ‘B jump‘class C(): def run(self): print ‘C run‘ def jump(self): print ‘C jump‘class Facade(): def __init__(self): self.a=A() self.b=B() self.c=C() def run(self): for item in (‘a‘,‘b‘,‘c‘): getattr(self,item).run() def jump(self): for item in (‘a‘,‘b‘,‘c‘): getattr(self,item).jump()if __name__==‘__main__‘: facade=Facade() facade.run() facade.jump()
Python设计模式——外观模式
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。