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 调用DLL操作抄表机
Jan 12 Python
Python实现简单登录验证
Apr 13 Python
20招让你的Python飞起来!
Sep 27 Python
使用Python & Flask 实现RESTful Web API的实例
Sep 19 Python
python3+PyQt5使用数据库表视图
Apr 24 Python
numpy中的meshgrid函数的使用
Jul 31 Python
使用Python实现图像标记点的坐标输出功能
Aug 14 Python
python中struct模块之字节型数据的处理方法
Aug 27 Python
深入了解Python在HDA中的应用
Sep 05 Python
浅析PEP570新语法: 只接受位置参数
Oct 15 Python
python GUI库图形界面开发之PyQt5树形结构控件QTreeWidget详细使用方法与实例
Mar 02 Python
Pyhton爬虫知识之正则表达式详解
Apr 01 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数组添加元素方法小结
2014/12/20 PHP
php基于session实现数据库交互的类实例
2015/08/03 PHP
全面解析PHP操作Memcache基本函数
2016/07/14 PHP
Mootools 1.2 手风琴(Accordion)教程
2009/09/15 Javascript
onkeydown事件解决按回车键直接提交数据的需求
2013/04/11 Javascript
通过Jquery的Ajax方法读取将table转换为Json
2014/05/31 Javascript
JavaScript异步加载浅析
2014/12/28 Javascript
JavaScript中的原型prototype属性使用详解
2015/06/05 Javascript
JavaScript检查数字是否为整数或浮点数的方法
2015/06/09 Javascript
在JavaScript中访问字符串的子串
2015/07/07 Javascript
js实现的简单radio背景颜色选择器代码
2015/08/18 Javascript
jQuery实现可展开合拢的手风琴面板菜单
2015/09/15 Javascript
BootStrap制作导航条实例代码
2016/05/06 Javascript
seajs模块压缩问题与解决方法实例分析
2017/10/10 Javascript
在vue中使用jointjs的方法
2018/03/24 Javascript
使用Vue做一个简单的todo应用的三种方式的示例代码
2018/10/20 Javascript
Vue中通过vue-router实现命名视图的问题
2020/04/23 Javascript
使用next.js开发网址缩短服务的方法
2020/06/17 Javascript
使用pandas读取csv文件的指定列方法
2018/04/21 Python
Python文件读写保存操作的示例代码
2018/09/14 Python
Python unittest 简单实现参数化的方法
2018/11/30 Python
Python自动化运维之Ansible定义主机与组规则操作详解
2019/06/13 Python
python实现美团订单推送到测试环境,提供便利操作示例
2019/08/09 Python
PyTorch实现重写/改写Dataset并载入Dataloader
2020/07/14 Python
Django数据统计功能count()的使用
2020/11/30 Python
HTML5页面直接调用百度地图API获取当前位置直接导航目的地的实现代码
2018/03/02 HTML / CSS
SheIn俄罗斯:时尚女装网上商店
2017/02/28 全球购物
APM Monaco中国官网:来自摩纳哥珠宝品牌
2017/12/27 全球购物
英国50岁以上人群的交友网站:Ourtime
2018/03/28 全球购物
单位工作证明范文
2014/09/14 职场文书
村主任群众路线教育实践活动个人对照检查材料思想汇报
2014/10/01 职场文书
党员组织生活会发言材料
2014/10/17 职场文书
起诉书范文
2015/05/20 职场文书
2015年教务处干事工作总结
2015/07/22 职场文书
Python 中的 copy()和deepcopy()
2021/11/07 Python
nginx 配置缓存
2022/05/11 Servers