首页 > 代码库 > Python设计模式——外观模式

Python设计模式——外观模式

外观模式跟代理模式有点像,都是在client和目标的类之间建一个中间的类,client不直接调用目标的类,而是通过先调用中间类的方法,由中间类来实现怎么调用目标类。

代理模式用这种模式的目的是可以实现client和目标类不直接通信,使他们之间相互独立,这样就比较安全,因为client不知道目标类的存在。

外观模式的目的是通过建立一个中间类,把调用目标类的代码都封装好,例如有时候目标类有很多个,逐一得去调用它们会很麻烦,这样通过中间类封装好的接口,client的调用就好很简单

不适用外观模式的例子

#encoding=utf-8__author__ = kevinlu1010@qq.comclass A():    def run(self):        print A run    def jump(self):        print A jumpclass B():    def run(self):        print B run    def jump(self):        print B jumpclass C():    def run(self):        print C run    def jump(self):        print C jumpif __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.comclass A():    def run(self):        print A run    def jump(self):        print A jumpclass B():    def run(self):        print B run    def jump(self):        print B jumpclass C():    def run(self):        print C run    def jump(self):        print C jumpclass 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设计模式——外观模式