zoukankan      html  css  js  c++  java
  • 桥接模式

    模式说明

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

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

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

    模式结构图

    程序示例

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

    代码:

     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

  • 相关阅读:
    Django Form组件的扩展
    Python TCP与UDP的区别
    Python三次握手和四次挥手
    网络基础之网络协议
    Python 类方法、实例方法、静态方法的使用与及实例
    python深浅拷贝
    2021牛客寒假算法基础集训营1 题解
    01 Trie 专题
    MOTS:多目标跟踪和分割论文翻译
    牛客巅峰赛S2第6场题解
  • 原文地址:https://www.cnblogs.com/cotton/p/3931349.html
Copyright © 2011-2022 走看看