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之总结参数的传递
Oct 10 Python
用Python进行一些简单的自然语言处理的教程
Mar 31 Python
python实现的用于搜索文件并进行内容替换的类实例
Jun 28 Python
Python编程pygame模块实现移动的小车示例代码
Jan 03 Python
Python 利用高德地图api实现经纬度与地址的批量转换
Aug 14 Python
python pycharm的安装及其使用
Oct 11 Python
Python实现元素等待代码实例
Nov 11 Python
Django restframework 框架认证、权限、限流用法示例
Dec 21 Python
Pycharm 安装 idea VIM插件的图文教程详解
Feb 21 Python
Django 404、500页面全局配置知识点详解
Mar 10 Python
DjangoWeb使用Datatable进行后端分页的实现
May 18 Python
Python使用os.listdir和os.walk获取文件路径
May 21 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
修改php.ini实现Mysql导入数据库文件最大限制的修改方法
2007/12/11 PHP
PHP 日期加减的类,很不错
2009/10/10 PHP
叫你如何修改Nginx与PHP的文件上传大小限制
2014/09/10 PHP
PHP使用pdo连接access数据库并循环显示数据操作示例
2018/06/05 PHP
基于jquery的文本框与autocomplete结合使用(asp.net+json)
2012/05/30 Javascript
网页加载时页面显示进度条加载完成之后显示网页内容
2012/12/23 Javascript
鼠标滑在标题上显示图片的JS代码
2013/11/19 Javascript
javascript的理解及经典案例分析
2016/05/20 Javascript
JS产生随机数的几个用法详解
2016/06/22 Javascript
老生常谈JavaScript 正则表达式语法
2016/08/20 Javascript
手机图片预览插件photoswipe.js使用总结
2016/08/25 Javascript
浅谈js中的变量名和函数名重名
2017/02/13 Javascript
AngualrJs清除定时器遇到的坑
2017/10/13 Javascript
node.js爬取中关村的在线电瓶车信息
2018/11/13 Javascript
vue实现移动端轻量日期组件不依赖第三方库的方法
2019/04/28 Javascript
详解小程序毫秒级倒计时(适用于拼团秒杀功能)
2019/05/05 Javascript
使用localStorage替代cookie做本地存储
2019/09/25 Javascript
[48:05]2018DOTA2亚洲邀请赛 3.31 小组赛 B组 VGJ.T vs VP
2018/03/31 DOTA
用Python实现一个简单的能够发送带附件的邮件程序的教程
2015/04/08 Python
Python实现字符串反转的常用方法分析【4种方法】
2017/09/30 Python
Python 确定多项式拟合/回归的阶数实例
2018/12/29 Python
python中使用ctypes调用so传参设置遇到的问题及解决方法
2019/06/19 Python
Python GUI学习之登录系统界面篇
2019/08/21 Python
利用PyCharm操作Github(仓库新建、更新,代码回滚)
2019/12/18 Python
Python numpy矩阵处理运算工具用法汇总
2020/07/13 Python
Python之Sklearn使用入门教程
2021/02/19 Python
CSS3+font字体文件实现圆形半透明菜单具体步骤(图解)
2013/06/03 HTML / CSS
财务会计毕业生自荐信
2013/11/02 职场文书
《小猫刮胡子》教学反思
2014/02/21 职场文书
资金主管岗位职责范本
2014/03/04 职场文书
企业管理毕业生求职信范文
2014/03/07 职场文书
职业生涯规划书范文
2014/03/10 职场文书
大学考试作弊检讨书
2015/05/06 职场文书
格列夫游记读书笔记
2015/07/01 职场文书
毕业酒会致辞
2015/07/29 职场文书
详解MySQL多版本并发控制机制(MVCC)源码
2021/06/23 MySQL