• 桥接模式


    桥接模式

     

    模式说明

    桥接模式即将抽象部分与它的实现部分分离开来,使他们都可以独立变化。

    桥接模式将继承关系转化成关联关系,它降低了类与类之间的耦合度,减少了系统中类的数量,也减少了代码量。

    个人感觉,代理模式、适配器模式和桥接模式相类似,代理模式是一个代理对外表示一个特定的类,适配器模式相当于一个适配器代理多个类,而桥接模式则更加适用于多个对多个的时候

    模式结构图

    程序示例

    说明:一个图形类,多个派生类;一个颜色类,多个派生类。派生类之间桥接。

    代码:

    复制代码
     1 class Color(object):
     2     _name=''
     3     def __init__(self, name):
     4         self._name=name
     5 
     6 
     7 class Shape(object):
     8     _color=None
     9     _name=''
    10     def __init__(self,name):
    11         self._name=name
    12     def setColor(self,color):
    13         self._color=color
    14     def draw(self):
    15         print '%s  %s' % (self._name,self._color._name)
    16         
    17 #if __name__=='__main__':
    18 #    color = Color('red')
    19 #    shape = Shape('square')
    20 #    shape.setColor(color)
    21 #    shape.draw()
    22 
    23 class White(Color):
    24     def __init__(self):
    25         return super(White, self).__init__(self.__class__.__name__)
    26 class Red(Color):
    27     def __init__(self):
    28         return super(Red, self).__init__(self.__class__.__name__)
    29 
    30 class Square(Shape):
    31     def __init__(self):
    32         return super(Square, self).__init__(self.__class__.__name__)
    33 
    34 class Circle(Shape):
    35     def __init__(self):
    36         return super(Circle, self).__init__(self.__class__.__name__)
    37 
    38 
    39 if __name__=='__main__':
    40     color = Red()
    41     shape=Square()
    42     shape.setColor(color)
    43     shape.draw()
    44 
    45     color = White()
    46     shape.setColor(color)
    47     shape.draw()
    复制代码

    运行结果:

    参考来源:

    http://www.cnblogs.com/chenssy/p/3679190.html

    http://www.cnblogs.com/wuyuegb2312/archive/2013/04/09/3008320.html

    http://www.cnblogs.com/Terrylee/archive/2006/07/17/334911.html

    http://www.cnblogs.com/zhenyulu/articles/67016.html

  • 相关阅读:
    Ext JS 6开发实例(三) :主界面设计
    Ext JS 6开发实例(二) :使用CMD创建应用程序
    文件夹或者文件比对工具 Beyond Compare
    LIS问题(DP解法)---poj1631(模板)
    hdoj Max Sum Plus Plus(DP)
    A* 算法详解
    hdoj1043 Eight(逆向BFS+打表+康拓展开)
    hdoj2612 Find a way (bfs)
    luoguP3366 [模板] 最小生成树
    luoguP1196(带权并查集)
  • 原文地址:https://www.cnblogs.com/Siny0/p/11156017.html
Copyright © 2020-2023  润新知