大话设计模式Python实现-桥接模式

桥接模式(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/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

原文地址:https://www.cnblogs.com/onepiece-andy/p/python-bridge-pattern.html