桥接模式(Bridge Pattern):将抽象部分与它的实现部分分离,使它们都可以独立地变化.
下面是一个桥接模式的demo:
1 #!/usr/bin/env python 2 # -*- coding:utf-8 -*- 3 4 __author__ = 'Andy' 5 """ 6 大话设计模式 7 设计模式——桥接模式 8 桥接模式(Bridge Pattern):将抽象部分与它的实现部分分离,使它们都可以独立地变化. 9 程序实例:手机软件的分类 和 手机品牌的分类 耦合度低 两种分类中间用一个set_handsetsoft桥接,各自的变化,不影响其他分类 10 """ 11 12 # 抽象手机软件类 13 class HandsetSoft(object): 14 15 def run(self): 16 pass 17 18 #具体游戏类,游戏是手机软件,继承抽象手机软件类 19 class HandsetGame(HandsetSoft): 20 21 def run(self): 22 print "运行手机游戏" 23 24 #手机通讯录 25 class HandsetAddressList(HandsetSoft): 26 27 def run(self): 28 print "运行通信录" 29 30 31 #抽象手机品牌类 32 class HandsetBrand(object): 33 34 def __init__(self): 35 self.soft = "" 36 37 def set_handsetsoft(self,soft): 38 self.soft = soft 39 40 def run(self): 41 pass 42 43 # 手机品牌N 44 class HandsetBrandN(HandsetBrand): 45 46 def run(self): 47 self.soft.run() 48 49 # 手机品牌M 50 class HandsetBrandM(HandsetBrand): 51 52 def run(self): 53 self.soft.run() 54 55 if __name__ == "__main__": 56 game = HandsetGame() 57 address = HandsetAddressList() 58 59 phoneN = HandsetBrandN() 60 phoneN.set_handsetsoft(game) 61 phoneN.run() 62 63 phoneM = HandsetBrandM() 64 phoneM.set_handsetsoft(address) 65 phoneM.run()
上面类的设计如下图
桥接模式的核心意图就是把类的实现独立出来,让他们各自变化。这样使每种实现的变化不会影响其他实现,从而达到应对变化的目的
作者:Andy
出处:http://www.cnblogs.com/onepiece-andy/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。