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实现列表转换成字典数据结构的方法
Mar 11 Python
对python numpy数组中冒号的使用方法详解
Apr 17 Python
TensorFlow的权值更新方法
Jun 14 Python
python脚本监控Tomcat服务器的方法
Jul 06 Python
详解python列表生成式和列表生成式器区别
Mar 27 Python
python pytest进阶之conftest.py详解
Jun 27 Python
django 信号调度机制详解
Jul 19 Python
django列表筛选功能的实现代码
Mar 27 Python
Django 如何使用日期时间选择器规范用户的时间输入示例代码详解
May 22 Python
通过实例解析python创建进程常用方法
Jun 19 Python
python Yaml、Json、Dict之间的转化
Oct 19 Python
Python一行代码实现自动发邮件功能
May 30 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 中文和编码判断代码
2010/05/16 PHP
Mac系统下使用brew搭建PHP(LNMP/LAMP)开发环境
2015/03/03 PHP
PHP使用pear实现mail发送功能 windows环境下配置pear
2016/04/15 PHP
php实现三级级联下拉框
2016/04/17 PHP
PHP删除字符串中非字母数字字符方法总结
2019/01/20 PHP
ASP.NET jQuery 实例2 (表单中使用回车在TextBox之间向下移动)
2012/01/13 Javascript
js 单击式的下拉菜单效果实例
2013/08/13 Javascript
JQuery中attr方法和removeAttr方法用法实例
2015/05/18 Javascript
基于gulp合并压缩Seajs模块的方式说明
2016/06/14 Javascript
Angular2使用Angular-CLI快速搭建工程(二)
2017/05/21 Javascript
Jquery+Ajax+xml实现中国地区选择三级联动菜单效果(推荐)
2017/06/09 jQuery
手把手教你搭建ES6的开发运行环境
2017/07/11 Javascript
浅谈vue.js中v-for循环渲染
2017/07/26 Javascript
angular.extend方法的具体使用
2017/09/14 Javascript
AngularJS实现自定义指令及指令配置项的方法
2017/11/20 Javascript
原生js实现拖拽功能基本思路详解
2018/04/18 Javascript
关于vue.js中实现方法内某些代码延时执行
2019/11/14 Javascript
[05:26]TI10典藏宝瓶套装外观展示
2020/07/03 DOTA
Python实现控制台输入密码的方法
2015/05/29 Python
Python实现多线程抓取妹子图
2015/08/08 Python
jupyter安装小结
2016/03/13 Python
解决Python网页爬虫之中文乱码问题
2018/05/11 Python
Python3实现将本地JSON大数据文件写入MySQL数据库的方法
2018/06/13 Python
python使用rpc框架gRPC的方法
2018/08/24 Python
python pip安装包出现:Failed building wheel for xxx错误的解决
2019/12/25 Python
对pytorch的函数中的group参数的作用介绍
2020/02/18 Python
Python configparser模块应用过程解析
2020/08/14 Python
利用Python中的Xpath实现一个在线汇率转换器
2020/09/09 Python
adidas美国官网:adidas US
2016/09/21 全球购物
Tory Burch英国官方网站:美国时尚生活品牌
2017/12/06 全球购物
CAT鞋加拿大官网:CAT Footwear加拿大
2020/08/05 全球购物
常用UNIX 命令(Linux的常用命令)
2015/12/26 面试题
房屋出售授权委托书
2014/10/12 职场文书
2015年学校信息技术工作总结
2015/05/25 职场文书
行政复议答复书
2015/07/01 职场文书
java调用Restful接口的三种方法
2021/08/23 Java/Android