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通过socket查询whois的方法
Jul 18 Python
Python中time模块与datetime模块在使用中的不同之处
Nov 24 Python
python daemon守护进程实现
Aug 27 Python
python引入导入自定义模块和外部文件的实例
Jul 24 Python
Python网络编程 Python套接字编程
Sep 13 Python
pycharm 解除默认unittest模式的方法
Nov 30 Python
Python Opencv中用compareHist函数进行直方图比较对比图片
Apr 07 Python
Python类中的装饰器在当前类中的声明与调用详解
Apr 15 Python
解决Django Haystack全文检索为空的问题
May 19 Python
Python文件名匹配与文件复制的实现
Dec 11 Python
用python修改excel表某一列内容的操作方法
Jun 11 Python
python之django路由和视图案例教程
Jul 26 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,ajax实现分页
2008/03/27 PHP
PHP生成excel时单元格内换行问题的解决方法
2010/08/26 PHP
php遍历所有文件及文件夹的方法深入解析
2013/06/08 PHP
PHP简单字符串过滤方法示例
2016/09/04 PHP
PHP使用Nginx实现反向代理
2017/09/20 PHP
ExtJS 2.0 GridPanel基本表格简明教程
2010/05/25 Javascript
javascript实现上传图片并预览的效果实现代码
2011/04/11 Javascript
JS target与currentTarget区别说明
2011/08/28 Javascript
js写出遮罩层登陆框和对联广告并自动跟随滚动条滚动
2014/04/29 Javascript
jQuery+ajax实现鼠标单击修改内容的方法
2014/06/27 Javascript
jquery ui resize 中border-box的bug修正
2015/04/26 Javascript
基于HTML5上使用iScroll实现下拉刷新,上拉加载更多
2016/05/21 Javascript
浅析jQuery 3.0中的Data
2016/06/14 Javascript
easyui-edatagrid.js实现回车键结束编辑功能的实例
2017/04/12 Javascript
Vue+axios 实现http拦截及路由拦截实例
2017/04/25 Javascript
JS手机端touch事件计算滑动距离的方法示例
2017/10/26 Javascript
详解通过源码解析Node.js中cluster模块的主要功能实现
2018/05/16 Javascript
NodeJs项目中关闭ESLint的方法
2018/08/09 NodeJs
函数式编程入门实践(一)
2019/04/20 Javascript
vue element-ui table组件动态生成表头和数据并修改单元格格式 父子组件通信
2019/08/15 Javascript
three.js 利用uv和ThreeBSP制作一个快递柜功能
2020/08/18 Javascript
Vue封装Axios请求和拦截器的步骤
2020/09/16 Javascript
[05:22]DOTA2 2015国际邀请赛中国区预选赛首日TOP10
2015/05/26 DOTA
python实现手机销售管理系统
2019/03/19 Python
Flask框架请求钩子与request请求对象用法实例分析
2019/11/07 Python
使用python动态生成波形曲线的实现
2019/12/04 Python
Python建造者模式案例运行原理解析
2020/06/29 Python
获取python运行输出的数据并解析存为dataFrame实例
2020/07/07 Python
基于Python爬取51cto博客页面信息过程解析
2020/08/25 Python
多视角3D逼真HTML5水波动画
2016/03/03 HTML / CSS
老公爱的承诺书
2014/03/31 职场文书
新闻传媒系求职信范文
2014/04/19 职场文书
办公室岗位职责
2015/02/04 职场文书
幼儿园开学温馨提示
2015/07/15 职场文书
MySQL触发器的使用
2021/05/24 MySQL
Golang 切片(Slice)实现增删改查
2022/04/22 Golang