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去掉字符串中重复字符的方法
Feb 27 Python
Python语言的12个基础知识点小结
Jul 10 Python
浅谈python中截取字符函数strip,lstrip,rstrip
Jul 17 Python
Python与R语言的简要对比
Nov 14 Python
python socket网络编程之粘包问题详解
Apr 28 Python
Python List cmp()知识点总结
Feb 18 Python
Python 用turtle实现用正方形画圆的例子
Nov 21 Python
Python打包工具PyInstaller的安装与pycharm配置支持PyInstaller详细方法
Feb 27 Python
Python urllib.request对象案例解析
May 11 Python
详解python使用金山词霸的翻译功能(调试工具断点的使用)
Jan 07 Python
利用Python实现最小二乘法与梯度下降算法
Feb 21 Python
教你使用Pandas直接核算Excel中快递费用
May 12 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
Fine Uploader文件上传组件应用介绍
2013/01/06 PHP
分享php分页的功能模块
2015/06/16 PHP
浅析PHP中call user func()函数及如何使用call user func调用自定义函数
2015/11/05 PHP
Thinkphp和onethink实现微信支付插件
2016/04/13 PHP
PHP简单实现DES加密解密的方法
2016/07/12 PHP
PHPExcel中文帮助手册|PHPExcel使用方法(分享)
2017/06/09 PHP
浅谈Javascript嵌套函数及闭包
2010/11/09 Javascript
javascript textarea光标定位方法(兼容IE和FF)
2011/03/12 Javascript
通过Javascript将数据导出到外部Excel文档的函数代码
2012/06/15 Javascript
jQuery的deferred对象详解
2014/11/12 Javascript
node.js中的http.createClient方法使用说明
2014/12/15 Javascript
javascript下拉框选项单击事件的例子分享
2015/03/04 Javascript
jquery中trigger()无法触发hover事件的解决方法
2015/05/07 Javascript
详解XMLHttpRequest(一)同步请求和异步请求
2016/09/14 Javascript
利用D3.js实现最简单的柱状图示例代码
2016/12/09 Javascript
jquery实现静态搜索功能(可输入搜索文字)
2017/03/28 jQuery
浅谈通过JS拦截 pushState和replaceState事件
2017/07/21 Javascript
vue2.x+webpack快速搭建前端项目框架详解
2017/11/30 Javascript
浅谈Node.js 子进程与应用场景
2018/01/24 Javascript
ES6下子组件调用父组件的方法(推荐)
2018/02/23 Javascript
vue mint-ui tabbar变组件使用
2018/05/04 Javascript
JS数组的常用10种方法详解
2020/05/08 Javascript
微信小程序实现转盘抽奖
2020/09/21 Javascript
Python selenium 三种等待方式详解(必会)
2016/09/15 Python
玩转python selenium鼠标键盘操作(ActionChains)
2020/04/12 Python
python3 requests中使用ip代理池随机生成ip的实例
2018/05/07 Python
如何基于Python批量下载音乐
2019/11/11 Python
使用python实现哈希表、字典、集合操作
2019/12/22 Python
基于python代码批量处理图片resize
2020/06/04 Python
Python3爬虫中Splash的知识总结
2020/07/10 Python
三个儿子教学反思
2014/02/03 职场文书
行政办公室岗位职责
2014/03/18 职场文书
民主评议党员自我鉴定
2014/10/21 职场文书
门面房租房协议书
2014/12/01 职场文书
优秀党员事迹材料
2014/12/18 职场文书
干部年终考核评语
2015/01/04 职场文书