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 时间处理datetime实例
Sep 06 Python
python发送伪造的arp请求
Jan 09 Python
Python设计模式之观察者模式实例
Apr 26 Python
python通过apply使用元祖和列表调用函数实例
May 26 Python
Python OpenCV之图片缩放的实现(cv2.resize)
Jun 28 Python
Python制作微信好友背景墙教程(附完整代码)
Jul 17 Python
elasticsearch python 查询的两种方法
Aug 04 Python
Python+Selenium实现自动化的环境搭建的步骤(图文)
Sep 01 Python
Python+OpenCV图像处理—— 色彩空间转换
Oct 22 Python
Python中openpyxl实现vlookup函数的实例
Oct 28 Python
python线程优先级队列知识点总结
Feb 28 Python
python机器学习实现oneR算法(以鸢尾data为例)
Mar 03 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
德生PL550的电路分析
2021/03/02 无线电
一个ftp类(ini.php)
2006/10/09 PHP
php入门学习知识点一 PHP与MYSql连接与查询
2011/07/14 PHP
Yii2中使用join、joinwith多表关联查询
2016/06/30 PHP
详解PHP队列的实现
2019/03/14 PHP
通过event对象的fromElement属性解决热区设置主实体的一个bug
2008/12/22 Javascript
js使用for循环与innerHTML获取选中tr下td值
2014/09/26 Javascript
JavaScript中switch语句的用法详解
2015/06/03 Javascript
原生JavaScript实现滚动条效果
2020/03/24 Javascript
JavaScript中通过提示框跳转页面的方法
2016/02/14 Javascript
利用js定义一个导航条菜单
2017/03/14 Javascript
Node.js dgram模块实现UDP通信示例代码
2017/09/26 Javascript
vue+swiper实现侧滑菜单效果
2017/12/28 Javascript
vue项目中公用footer组件底部位置的适配问题
2018/05/10 Javascript
Vuepress 搭建带评论功能的静态博客的实现
2019/02/17 Javascript
小程序封装路由文件和路由方法(5种全解析)
2019/05/26 Javascript
深度了解vue.js中hooks的相关知识
2019/06/14 Javascript
bootstrap table插件动态加载表头
2019/07/19 Javascript
Vue 实现分页与输入框关键字筛选功能
2020/01/02 Javascript
JS数组方法concat()用法实例分析
2020/01/18 Javascript
详解Vue3中对VDOM的改进
2020/04/23 Javascript
nuxt 页面路由配置,主页轮播组件开发操作
2020/11/05 Javascript
JavaScript实现筛选数组
2021/03/02 Javascript
python中from module import * 的一个坑
2014/07/20 Python
Python编程实现及时获取新邮件的方法示例
2017/08/10 Python
Python代码实现KNN算法
2017/12/20 Python
Python Json模块中dumps、loads、dump、load函数介绍
2018/05/15 Python
在Python中,不用while和for循环遍历列表的实例
2019/02/20 Python
详解python持久化文件读写
2019/04/06 Python
python使用python-pptx删除ppt某页实例
2020/02/14 Python
简单的HTML5初步入门教程
2015/09/29 HTML / CSS
机电一体化专业推荐信
2013/12/03 职场文书
2014年小学元旦活动方案
2014/02/12 职场文书
节能环保标语
2014/06/12 职场文书
2014年最新离婚协议书范本
2014/10/11 职场文书
MySQL利用UNION连接2个查询排序失效详解
2021/11/20 MySQL