Python设计模式之桥接模式原理与用法实例分析


Posted in Python onJanuary 10, 2019

本文实例讲述了Python设计模式之桥接模式原理与用法。分享给大家供大家参考,具体如下:

桥接模式(Bridge Pattern):将抽象部分与它的实现部分分离,使它们都可以独立地变化.

下面是一个桥接模式的demo:

#!/usr/bin/env python
# -*- coding:utf-8 -*-
__author__ = 'Andy'
"""
大话设计模式
设计模式——桥接模式
桥接模式(Bridge Pattern):将抽象部分与它的实现部分分离,使它们都可以独立地变化.
程序实例:手机软件的分类 和 手机品牌的分类 耦合度低 两种分类中间用一个set_handsetsoft桥接,各自的变化,不影响其他分类
"""
# 抽象手机软件类
class HandsetSoft(object):
  def run(self):
    pass
#具体游戏类,游戏是手机软件,继承抽象手机软件类
class HandsetGame(HandsetSoft):
  def run(self):
    print "运行手机游戏"
#手机通讯录
class HandsetAddressList(HandsetSoft):
  def run(self):
    print "运行通信录"
#抽象手机品牌类
class HandsetBrand(object):
  def __init__(self):
    self.soft = ""
  def set_handsetsoft(self,soft):
    self.soft = soft
  def run(self):
    pass
# 手机品牌N
class HandsetBrandN(HandsetBrand):
  def run(self):
    self.soft.run()
# 手机品牌M
class HandsetBrandM(HandsetBrand):
  def run(self):
    self.soft.run()
if __name__ == "__main__":
  game = HandsetGame()
  address = HandsetAddressList()
  phoneN = HandsetBrandN()
  phoneN.set_handsetsoft(game)
  phoneN.run()
  phoneM = HandsetBrandM()
  phoneM.set_handsetsoft(address)
  phoneM.run()

运行结果:

Python设计模式之桥接模式原理与用法实例分析

上面类的设计如下图

Python设计模式之桥接模式原理与用法实例分析

桥接模式的核心意图就是把类的实现独立出来,让他们各自变化。这样使每种实现的变化不会影响其他实现,从而达到应对变化的目的

更多关于Python相关内容可查看本站专题:《Python数据结构与算法教程》、《Python Socket编程技巧总结》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》及《Python入门与进阶经典教程》

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
在Python中操作文件之seek()方法的使用教程
May 24 Python
Python使用BeautifulSoup库解析HTML基本使用教程
Mar 31 Python
Python读取word文本操作详解
Jan 22 Python
Python编程scoketServer实现多线程同步实例代码
Jan 29 Python
Pandas 数据框增、删、改、查、去重、抽样基本操作方法
Apr 12 Python
Python3导入自定义模块的三种方法详解
Apr 13 Python
Python文本统计功能之西游记用字统计操作示例
May 07 Python
python常用函数与用法示例
Jul 02 Python
对Python中画图时候的线类型详解
Jul 07 Python
django 基于中间件实现限制ip频繁访问过程详解
Jul 30 Python
python实现opencv+scoket网络实时图传
Mar 20 Python
python中requests库+xpath+lxml简单使用
Apr 29 Python
Python基础教程之异常详解
Jan 10 #Python
Python+OpenCV感兴趣区域ROI提取方法
Jan 10 #Python
python+opencv 读取文件夹下的所有图像并批量保存ROI的方法
Jan 10 #Python
pandas ix &iloc &loc的区别
Jan 10 #Python
python 移动图片到另外一个文件夹的实例
Jan 10 #Python
python将处理好的图像保存到指定目录下的方法
Jan 10 #Python
对python PLT中的image和skimage处理图片方法详解
Jan 10 #Python
You might like
短波问题解答
2021/02/28 无线电
PHP的FTP学习(一)[转自奥索]
2006/10/09 PHP
php文章内容分页并生成相应的htm静态页面代码
2010/06/07 PHP
PHP 无限分类三种方式 非函数的递归调用!
2011/08/26 PHP
php获取网站百度快照日期的方法
2015/07/29 PHP
php经典算法集锦
2015/11/14 PHP
php实现将HTML页面转换成word并且保存的方法
2016/10/14 PHP
php数值转换时间及时间转换数值用法示例
2017/05/18 PHP
Chrome中模态对话框showModalDialog返回值问题的解决方法
2010/05/25 Javascript
JS父页面与子页面相互传值方法
2014/03/05 Javascript
jquery实现浮动在网页右下角的彩票开奖公告窗口代码
2015/09/04 Javascript
jQuery点击改变class并toggle及toggleClass()方法定义用法
2015/12/11 Javascript
简单实现js点击展开二级菜单功能
2017/05/16 Javascript
如何使用puppet替换文件中的string
2018/12/06 Javascript
微信小程序 this.triggerEvent()的具体使用
2019/12/10 Javascript
JavaScript实现多个物体同时运动
2020/03/12 Javascript
[05:39]2014DOTA2国际邀请赛 DK晋级胜者组专访战队国士无双
2014/07/14 DOTA
[13:55]Newbee vs Team Spirit
2018/06/07 DOTA
深入理解Javascript中的this关键字
2015/03/27 Python
K-means聚类算法介绍与利用python实现的代码示例
2017/11/13 Python
详解如何设置Python环境变量?
2019/05/13 Python
在django中form的label和verbose name的区别说明
2020/05/20 Python
python 使用OpenCV进行简单的人像分割与合成
2021/02/02 Python
Python 求向量的余弦值操作
2021/03/04 Python
Ibood荷兰:互联网每日最佳在线优惠
2019/02/28 全球购物
string = null 和string = ''的区别
2013/04/28 面试题
企业演讲稿范文
2013/12/28 职场文书
庆祝三八妇女节标语
2014/10/09 职场文书
行政人事专员岗位职责
2015/04/07 职场文书
呼啸山庄读书笔记
2015/06/29 职场文书
护理心得体会范文
2016/01/22 职场文书
导游词之包公祠
2019/11/25 职场文书
MySQL CHAR和VARCHAR该如何选择
2021/05/31 MySQL
Django路由层如何获取正确的url
2021/07/15 Python
SQL实现LeetCode(177.第N高薪水)
2021/08/04 MySQL
JavaScript 定时器详情
2021/11/11 Javascript