桥接模式
模式说明
桥接模式即将抽象部分与它的实现部分分离开来,使他们都可以独立变化。
桥接模式将继承关系转化成关联关系,它降低了类与类之间的耦合度,减少了系统中类的数量,也减少了代码量。
个人感觉,代理模式、适配器模式和桥接模式相类似,代理模式是一个代理对外表示一个特定的类,适配器模式相当于一个适配器代理多个类,而桥接模式则更加适用于多个对多个的时候
模式结构图
程序示例
说明:一个图形类,多个派生类;一个颜色类,多个派生类。派生类之间桥接。
代码:
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