码迷,mamicode.com
首页 > 编程语言 > 详细

Python设计模式——外观模式

时间:2014-10-16 23:00:23      阅读:208      评论:0      收藏:0      [点我收藏+]

标签:style   blog   color   使用   for   sp   div   on   log   

外观模式跟代理模式有点像,都是在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设计模式——外观模式

标签:style   blog   color   使用   for   sp   div   on   log   

原文地址:http://www.cnblogs.com/Xjng/p/4029550.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!