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 搭建Web站点之Web服务器与Web框架
Nov 06 Python
详谈python http长连接客户端
Jun 12 Python
Python读取文件内容的三种常用方式及效率比较
Oct 07 Python
python smtplib模块自动收发邮件功能(一)
May 22 Python
对pandas数据判断是否为NaN值的方法详解
Nov 06 Python
Python实现钉钉发送报警消息的方法
Feb 20 Python
Python3实现的判断环形链表算法示例
Mar 07 Python
python打开windows应用程序的实例
Jun 28 Python
Django的CVB实例详解
Feb 10 Python
python Paramiko使用示例
Sep 21 Python
python openpyxl模块的使用详解
Feb 25 Python
pytorch 把图片数据转化成tensor的操作
Mar 04 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
《一拳超人》埼玉一拳下去,他们存在了800年毫无意义!
2020/03/02 日漫
PHP文件打开、关闭、写入的判断与执行代码
2011/05/24 PHP
ThinkPHP CURD方法之page方法详解
2014/06/18 PHP
PHP回溯法解决0-1背包问题实例分析
2015/03/23 PHP
PHP7之Mongodb API使用详解
2015/12/26 PHP
laravel5.2实现区分前后台用户登录的方法
2017/01/11 PHP
javascript FormatNumber函数实现方法
2008/12/30 Javascript
关于extjs4如何获取grid修改后的数据的问题
2013/08/07 Javascript
javascript中bind函数的作用实例介绍
2014/09/28 Javascript
跟我学习javascript的this关键字
2020/05/28 Javascript
JS常见问题之为什么点击弹出的i总是最后一个
2016/01/05 Javascript
js利用正则表达式检验输入内容是否为网址
2016/07/05 Javascript
Bootstrap 最常用的JS插件系列总结(图片轮播、标签切换等)
2016/07/14 Javascript
Vue.js每天必学之数据双向绑定
2016/09/05 Javascript
JavaScript制作颜色反转小游戏
2016/09/25 Javascript
js 判断数据类型的几种方法
2017/01/13 Javascript
angular或者js怎么确定选中ul中的哪几个li
2017/08/16 Javascript
vue和webpack项目构建过程常用的npm命令详解
2018/06/15 Javascript
在Python的Flask框架下使用sqlalchemy库的简单教程
2015/04/09 Python
Python书单 不将就
2017/07/11 Python
Pycharm编辑器技巧之自动导入模块详解
2017/07/18 Python
Python实现的自定义多线程多进程类示例
2018/03/23 Python
Python cookbook(数据结构与算法)同时对数据做转换和换算处理操作示例
2018/03/23 Python
python 处理微信对账单数据的实例代码
2019/07/19 Python
Python3 pywin32模块安装的详细步骤
2020/05/26 Python
python中wheel的用法整理
2020/06/15 Python
Python json格式化打印实现过程解析
2020/07/21 Python
把Anaconda中的环境导入到Pycharm里面的方法步骤
2020/10/30 Python
html5触摸事件判断滑动方向的实现
2018/06/05 HTML / CSS
canvas简易绘图的实现(海绵宝宝篇)
2018/07/04 HTML / CSS
TripAdvisor印尼站:全球领先的旅游网站
2018/03/15 全球购物
英国专业美容产品在线:Mylee(从指甲到脱毛)
2020/07/06 全球购物
怎么可以提高数据库查询数据的速度
2014/06/28 面试题
《厄运打不垮的信念》教学反思
2014/04/13 职场文书
企业党的群众路线教育实践活动领导班子对照检查材料
2014/09/25 职场文书
gateway与spring-boot-starter-web冲突问题的解决
2021/07/16 Java/Android