Python设计模式之适配器模式原理与用法详解


Posted in Python onJanuary 15, 2019

本文实例讲述了Python设计模式之适配器模式原理与用法。分享给大家供大家参考,具体如下:

适配器模式(Adapter Pattern):将一个类的接口转换成为客户希望的另外一个接口.

下面是一个适配器模式的demo:

#!/usr/bin/env python
# -*- coding:utf-8 -*-
__author__ = 'Andy'
"""
大话设计模式
设计模式——适配器模式
适配器模式(Adapter Pattern):将一个类的接口转换成为客户希望的另外一个接口.Adapter Pattern使得原本由于接口不兼容而不能一起工作的那些类可以一起工作.
应用场景:系统数据和行为都正确,但接口不符合时,目的是使控制范围之外的一个原有对象与某个接口匹配,适配器模式主要应用于希望复用一些现存的类,但接口又与复用环境不一致的情况
"""
class Target(object):
  def request(self):
    print "普通请求"
class Adaptee(object):
  def specific_request(self):
    print "特殊请求"
class Adapter(Target):
  def __init__(self):
    self.adaptee = Adaptee()
  def request(self):
    self.adaptee.specific_request()
if __name__ == "__main__":
  target = Adapter()
  target.request()
#!/usr/bin/env python
# -*- coding:utf-8 -*-
__author__ = 'Andy'
"""
大话设计模式
设计模式——适配器模式
适配器模式(Adapter Pattern):将一个类的接口转换成为客户希望的另外一个接口.Adapter Pattern使得原本由于接口不兼容而不能一起工作的那些类可以一起工作.
应用场景:系统数据和行为都正确,但接口不符合时,目的是使控制范围之外的一个原有对象与某个接口匹配,适配器模式主要应用于希望复用一些现存的类,但接口又与复用环境不一致的情况
"""
class Target(object):
  def request(self):
    print "普通请求"
class Adaptee(object):
  def specific_request(self):
    print "特殊请求"
class Adapter(Target):
  def __init__(self):
    self.adaptee = Adaptee()
  def request(self):
    self.adaptee.specific_request()
if __name__ == "__main__":
  target = Adapter()
  target.request()

上面类的设计如下图:

Python设计模式之适配器模式原理与用法详解

系统数据和行为都正确,但接口不符合时,目的是使控制范围之外的一个原有对象与某个接口匹配,适配器模式主要应用于希望复用一些现存的类,但接口又与复用环境不一致的情况

更多关于Python相关内容可查看本站专题:《Python数据结构与算法教程》、《Python Socket编程技巧总结》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》及《Python入门与进阶经典教程》

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
python解析html开发库pyquery使用方法
Feb 07 Python
python实现rest请求api示例
Apr 22 Python
python3.5 email实现发送邮件功能
May 22 Python
python+pyqt5编写md5生成器
Mar 18 Python
python实现手机销售管理系统
Mar 19 Python
pandas DataFrame 交集并集补集的实现
Jun 24 Python
在SQLite-Python中实现返回、查询中文字段的方法
Jul 17 Python
关于python导入模块import与常见的模块详解
Aug 28 Python
通过Turtle库在Python中绘制一个鼠年福鼠
Feb 03 Python
python mysql 字段与关键字冲突的解决方式
Mar 02 Python
对django 2.x版本中models.ForeignKey()外键说明介绍
Mar 30 Python
Python通过m3u8文件下载合并ts视频的操作
Apr 16 Python
Python设计模式之备忘录模式原理与用法详解
Jan 15 #Python
matplotlib.pyplot绘图显示控制方法
Jan 15 #Python
python实现彩色图转换成灰度图
Jan 15 #Python
Python中new方法的详解
Jan 15 #Python
Python之循环结构
Jan 15 #Python
python实现图片彩色转化为素描
Jan 15 #Python
带你认识Django
Jan 15 #Python
You might like
php基础知识:类与对象(1)
2006/12/13 PHP
mysql 全文搜索 技巧
2007/04/27 PHP
PHP删除数组中空值的方法介绍
2014/04/14 PHP
微信公众平台开发关注及取消关注事件的方法
2014/12/23 PHP
微信获取用户地理位置信息的原理与步骤
2015/11/12 PHP
你不知道的文件上传漏洞php代码分析
2016/09/29 PHP
基于jQuery的图片大小自动适应实现代码
2010/11/17 Javascript
jcarousellite.js 基于Jquery的图片无缝滚动插件
2010/12/30 Javascript
各浏览器对click方法的支持差异小结
2011/07/31 Javascript
js 在定义的时候立即执行的函数表达式(function)写法
2013/01/16 Javascript
XMLHttpRequest处理xml格式的返回数据(示例代码)
2013/11/21 Javascript
一个很有趣3D球状标签云兼容IE8
2014/08/22 Javascript
JavaScript中的slice()方法使用详解
2015/06/06 Javascript
node-http-proxy修改响应结果实例代码
2016/06/06 Javascript
Google 地图事件实例讲解
2016/08/06 Javascript
微信小程序 摇一摇抽奖简单实例实现代码
2017/01/09 Javascript
详解如何使用Vue2做服务端渲染
2017/03/29 Javascript
简单谈谈原生js的math对象
2017/06/27 Javascript
node实现定时发送邮件的示例代码
2017/08/26 Javascript
详解vue-admin和后端(flask)分离结合的例子
2018/02/12 Javascript
微信小程序之判断页面滚动方向的示例代码
2018/08/30 Javascript
详解nodejs 开发企业微信第三方应用入门教程
2019/03/12 NodeJs
python通过pil模块将raw图片转换成png图片的方法
2015/03/16 Python
Python程序运行原理图文解析
2018/02/10 Python
python线程池threadpool使用篇
2018/04/27 Python
JSON文件及Python对JSON文件的读写操作
2018/10/07 Python
深入理解Django-Signals信号量
2019/02/19 Python
Python3 批量扫描端口的例子
2019/07/25 Python
python使用yield压平嵌套字典的超简单方法
2019/11/02 Python
在tensorflow中实现屏蔽输出的log信息
2020/02/04 Python
python中random模块详解
2021/03/01 Python
精彩自我鉴定
2014/01/16 职场文书
美化环境标语
2014/06/20 职场文书
在职党员进社区活动总结
2014/07/05 职场文书
教师演讲稿开场白
2014/08/25 职场文书
nginx.conf配置文件结构小结
2022/04/08 Servers