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中函数的参数定义和可变参数用法实例分析
Jun 04 Python
Python字符串匹配算法KMP实例
Jul 18 Python
基于python的Tkinter实现一个简易计算器
Dec 31 Python
Python获取暗黑破坏神3战网前1000命位玩家的英雄技能统计
Jul 04 Python
python 计算文件的md5值实例
Jan 13 Python
Python探索之SocketServer详解
Oct 28 Python
django celery redis使用具体实践
Apr 08 Python
利用Python实现Shp格式向GeoJSON的转换方法
Jul 09 Python
tensorflow图像裁剪进行数据增强操作
Jun 30 Python
基于Python实现下载网易音乐代码实例
Aug 10 Python
通俗易懂了解Python装饰器原理
Sep 17 Python
python 实现简易的记事本
Nov 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
模仿OSO的论坛(二)
2006/10/09 PHP
Smarty日期时间操作方法示例
2016/11/15 PHP
php解析mht文件转换成html的实例
2017/03/13 PHP
lnmp安装多版本PHP共存的方法详解
2018/08/02 PHP
PHP中的输出echo、print、printf、sprintf、print_r和var_dump的示例代码
2020/12/01 PHP
js和jquery批量绑定事件传参数一(新猪猪原创)
2010/06/23 Javascript
Jquery拖拽并简单保存的实现代码
2010/11/28 Javascript
你必须知道的Javascript知识点之"深入理解作用域链"的介绍
2013/04/23 Javascript
学习JavaScript鼠标响应事件
2015/12/25 Javascript
javascript插件开发的一些感想和心得
2016/02/28 Javascript
用NodeJS实现批量查询地理位置的经纬度接口
2016/08/16 NodeJs
JS实现动态增加和删除li标签行的实例代码
2016/10/16 Javascript
原生JavaScript实现Tooltip浮动提示框特效
2017/03/07 Javascript
使用html+js+css 实现页面轮播图效果(实例讲解)
2017/09/21 Javascript
React 组件转 Vue 组件的命令写法
2018/02/28 Javascript
vue-cli脚手架引入图片的几种方法总结
2018/03/13 Javascript
微信小程序ibeacon三点定位详解
2018/10/31 Javascript
vue中eslintrc.js配置最详细介绍
2018/12/21 Javascript
jQuery实现的导航条点击后高亮显示功能示例
2019/03/04 jQuery
nodejs语言实现验证码生成功能的示例代码
2019/10/13 NodeJs
js实现无缝轮播图特效
2020/05/09 Javascript
使用JS实现鼠标放上图片进行放大离开实现缩小功能
2021/01/27 Javascript
如何在vue中使用video.js播放m3u8格式的视频
2021/02/01 Vue.js
Python 用户登录验证的小例子
2013/03/06 Python
python实现微信接口(itchat)详细介绍
2017/10/23 Python
利用python实现微信头像加红色数字功能
2018/03/26 Python
Appium+python自动化怎么查看程序所占端口号和IP
2019/06/14 Python
Python input函数使用实例解析
2019/11/22 Python
django框架中间件原理与用法详解
2019/12/10 Python
python 下载m3u8视频的示例代码
2020/11/11 Python
HTML5在微信内置浏览器下右上角菜单的调整字体导致页面显示错乱的问题
2021/01/19 HTML / CSS
SEPHORA丝芙兰德国官方购物网站:化妆品、护肤品和香水
2020/01/21 全球购物
揭牌仪式主持词
2014/03/19 职场文书
私人会所最新创业计划书范文
2014/03/24 职场文书
临时租车协议范本
2014/09/23 职场文书
JavaWeb Servlet开发注册页面实例
2022/04/11 Java/Android