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中使用PIL模块处理图像的教程
Apr 29 Python
Python的Django框架中模板碎片缓存简介
Jul 24 Python
python实现按任意键继续执行程序
Dec 30 Python
Python3编码问题 Unicode utf-8 bytes互转方法
Oct 26 Python
Python实现图片批量加入水印代码实例
Nov 30 Python
用python解压分析jar包实例
Jan 16 Python
Python 实现日志同时输出到屏幕和文件
Feb 19 Python
python使用nibabel和sitk读取保存nii.gz文件实例
Jul 01 Python
利用python批量爬取百度任意类别的图片的实现方法
Oct 07 Python
python Yaml、Json、Dict之间的转化
Oct 19 Python
Python Matplotlib绘制两个Y轴图像
Apr 13 Python
Django框架模板用法详解
Jun 10 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获得数组交集与差集的方法
2015/06/10 PHP
php实现倒计时效果
2015/12/19 PHP
服务器迁移php版本不同可能诱发的问题
2015/12/22 PHP
PHP简单实现正则匹配省市区的方法
2018/04/13 PHP
php ajax数据传输和响应方法
2018/08/21 PHP
PHP远程连接oracle数据库操作实现方法图文详解
2019/04/11 PHP
jquery URL参数判断,确定菜单样式
2010/05/31 Javascript
node在两个div之间移动,用ztree实现
2013/03/06 Javascript
js防止页面被iframe调用的方法
2014/10/30 Javascript
JS+CSS实现带关闭按钮DIV弹出窗口的方法
2015/02/27 Javascript
jQuery原生的动画效果
2015/07/10 Javascript
getElementById().innerHTML与getElementById().value的区别
2016/10/27 Javascript
jQuery弹出窗口简单实现代码
2017/03/09 Javascript
js实现旋转木马效果
2017/03/17 Javascript
Bootstrap Multiselect 常用组件实现代码
2017/07/09 Javascript
如何编写一个完整的Angular4 FormText 组件
2017/11/18 Javascript
javascript实现数字配对游戏的实例讲解
2017/12/14 Javascript
手动用webpack搭建第一个ReactApp的示例
2018/04/11 Javascript
vuex的module模块用法示例
2018/11/12 Javascript
python使用xmlrpc实例讲解
2013/12/17 Python
Python编程之event对象的用法实例分析
2017/03/23 Python
将字典转换为DataFrame并进行频次统计的方法
2018/04/08 Python
python中for循环输出列表索引与对应的值方法
2018/11/07 Python
Django之无名分组和有名分组的实现
2019/04/16 Python
python 统计文件中的字符串数目示例
2019/12/24 Python
利用PyQt中的QThread类实现多线程
2020/02/18 Python
Python实现http接口自动化测试的示例代码
2020/10/09 Python
python 求两个向量的顺时针夹角操作
2021/03/04 Python
html5 http的轮询和Websocket原理
2018/10/19 HTML / CSS
时尚设计师手表:The Watch Cabin
2018/10/06 全球购物
什么是反射?如何实现反射?
2016/07/25 面试题
卫生安全检查制度
2014/02/04 职场文书
不打扫卫生检讨书
2014/02/12 职场文书
2014年工作总结与下年工作计划
2014/11/27 职场文书
先进单位申报材料
2014/12/25 职场文书
办公室日常管理制度
2015/08/04 职场文书