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个有没有共同的抽象基类或者实现相同的接口,但他们的都有相同的公用方法名。

  • 相关阅读:
    pair
    非整除集合
    集合 set
    实现字通配符*
    vector
    矩阵及其初等变换
    求数组中连续子数组(最少有一个元素)的最大和。
    最长上升序列(Lis)
    st表求区间最大值
    [Noip2015] 信息传递
  • 原文地址:https://www.cnblogs.com/ydf0509/p/8525853.html
Copyright © 2011-2022 走看看