zoukankan      html  css  js  c++  java
  • 设计模式-结构型模式,外观模式(6)

    外观模式(Facade Pattern)隐藏系统的复杂性,并向客户端提供了一个客户端可以访问系统的接口。这种类型的设计模式属于结构型模式,它向现有的系统添加一个接口,来隐藏系统的复杂性。

    这种模式涉及到一个单一的类,该类提供了客户端请求的简化方法和对现有系统类方法的委托调用。

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

    A B C的关系是他们看起来是鸭子类型,不管他们3个有没有共同的抽象基类或者实现相同的接口,但他们的都有相同的公用方法名。

  • 相关阅读:
    CBV进阶(一)
    uva 11748 Rigging Elections
    uva 11573 Ocean Currents(bfs+优先队列)
    无向图的欧拉路
    poj 3254 Corn Fields
    hdu 1114
    hdu 2639 (第k小的01背包)
    uva 1347 tour
    uva 437 The Tower of Babylon
    uva 1025 A Spy in the Metro(动态规划)
  • 原文地址:https://www.cnblogs.com/ydf0509/p/8525853.html
Copyright © 2011-2022 走看看