微信号:grzlwx

介绍:光荣之路官方资讯

代码每天见:Python设计模式——外观模式

2016-01-31 22:48 光荣之路

吴老的《selenium webdriver 实战宝典》出版了!

相关阅读:

Python设计模式——装饰模式(Decorator)

Python设计模式——代理模式(Proxy)

Python设计模式——工厂方法模式(FactoryMethod)

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()

(作者:Xjng 来源:http://www.cnblogs.com/Xjng/p/4029550.html)

公益传播测试知识、技能与正能量!感谢作者!
分享测试生活,思考测试人生!欢迎投稿!
文章图片来自网络,如有侵权请见谅,请联系我们妥善处理。
735821166@qq.com

光荣之路
软件测试培训


官网:www.gloryroad.cn

微信公众号:gloryroadtrain

性能测试QQ群:415987441
测试招聘QQ群: 203715128
自动化3群QQ: 371211499

Python群:457561756

 
光荣之路 更多文章 今天晚上的 linux 公开课- Awk 编程 7月28日(今天)晚上的 linux 公开课- shell编程 8月4日(今天)晚上的 linux 公开课- shell编程 9月1日(本周一)晚8点半,光荣之路Web自动化系列基础课—javascript第二讲 推荐本好书《与机器赛跑》
猜您喜欢 张洋:写给.NET程序员,不要困在自己建造的盒子里 R语言入门第15讲:二项分布 扩展Django的ORM iOS高性能图片架构与设计 从编程的角度理解gradle脚本﹘﹘Android Studio脚本构建和编程