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 输出一个两行字符的变量
Feb 05 Python
python中xrange和range的区别
May 13 Python
python提取内容关键词的方法
Mar 16 Python
python中Matplotlib实现绘制3D图的示例代码
Sep 04 Python
python3的输入方式及多组输入方法
Oct 17 Python
使用python绘制3维正态分布图的方法
Dec 29 Python
Django实现发送邮件找回密码功能
Aug 12 Python
pytorch中的自定义数据处理详解
Jan 06 Python
Pytorch maxpool的ceil_mode用法
Feb 18 Python
Python 爬取必应壁纸的实例讲解
Feb 24 Python
Python 列表推导式需要注意的地方
Oct 23 Python
python使用matplotlib的savefig保存时图片保存不完整的问题
Jan 08 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写的采集程序
2007/03/16 PHP
PHP XML error parsing SOAP payload on line 1
2010/06/17 PHP
php FLEA中二叉树数组的遍历输出
2012/09/26 PHP
smarty模板引擎中内建函数if、elseif和else的使用方法
2015/01/22 PHP
PHP合并discuz用户脚本的方法
2015/08/04 PHP
php如何把表单内容提交到数据库
2019/07/08 PHP
一个可以显示阴历的JS代码
2007/03/05 Javascript
jquery插件之easing使用
2010/08/19 Javascript
再说AutoComplete自动补全之实现原理
2011/11/05 Javascript
下拉列表select 由左边框移动到右边示例
2013/12/04 Javascript
Jqgrid设置全选(选择)及获取选择行的值示例代码
2013/12/28 Javascript
深入理解JavaScript系列(40):设计模式之组合模式详解
2015/03/04 Javascript
鼠标事件的screenY,pageY,clientY,layerY,offsetY属性详解
2015/03/12 Javascript
微信小程序--onShareAppMessage分享参数用处(页面分享)
2017/04/18 Javascript
Vue2单一事件管理组件通信
2017/05/09 Javascript
详解vue.js 开发环境搭建最简单攻略
2017/06/12 Javascript
jQuery自定义多选下拉框效果
2017/06/19 jQuery
angular+ionic返回上一页并刷新页面
2017/08/08 Javascript
解决vue 更改计算属性后select选中值不更改的问题
2018/03/02 Javascript
javascript闭包的使用之按钮切换功能
2018/08/30 Javascript
解决vue-cli脚手架打包后vendor文件过大的问题
2018/09/27 Javascript
nodejs中方法和模块用法示例
2018/12/24 NodeJs
JS中FormData类实现文件上传
2020/03/27 Javascript
[00:37]2016完美“圣”典风云人物:AMS宣传片
2016/12/06 DOTA
Python向日志输出中添加上下文信息
2017/05/24 Python
python WindowsError的错误代码详解
2017/07/23 Python
python try except返回异常的信息字符串代码实例
2019/08/15 Python
tensorflow ckpt模型和pb模型获取节点名称,及ckpt转pb模型实例
2020/01/21 Python
Python 从attribute到property详解
2020/03/05 Python
任意一块网页内容实现“活”的背景(目前火狐浏览器专有)
2014/05/07 HTML / CSS
50岁生日感言
2014/01/23 职场文书
运动会横幅标语
2014/06/17 职场文书
2016领导干部廉洁自律心得体会
2016/01/13 职场文书
2016年社区“6.26”禁毒日宣传活动总结
2016/04/05 职场文书
Spring Boot mybatis-config 和 log4j 输出sql 日志的方式
2021/07/26 Java/Android
JS前端可扩展的低代码UI框架Sunmao使用详解
2022/07/23 Javascript