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

 更新时间:2019年01月15日 11:57:57   作者:Andy冉明  
这篇文章主要介绍了Python设计模式之适配器模式原理与用法,结合实例形式分析了适配器模式的相关概念、原理及Python实现技巧,需要的朋友可以参考下

本文实例讲述了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 Socket编程技巧总结》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》及《Python入门与进阶经典教程

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

相关文章

  • 使用python-cv2实现视频的分解与合成的示例代码

    使用python-cv2实现视频的分解与合成的示例代码

    这篇文章主要介绍了使用python-cv2实现视频的分解与合成的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-10-10
  • OpenCV Python身份证信息识别过程详解

    OpenCV Python身份证信息识别过程详解

    本篇文章使用OpenCV-Python和CnOcr来实现身份证信息识别的案例,本篇文章使用的Python版本为3.6,OpenCV-Python版本为3.4.1.15,如果是4.x版本的同学,可能会有一些Api操作不同,下面跟随小编看下OpenCV Python身份证信息识别过程
    2022-04-04
  • 一文解决Python切换版本问题

    一文解决Python切换版本问题

    由于mac默认都会安装python2.x,这给我们python开发造成不便,我们经常要用到python3.x的版本来进行测试、开发,所以本文主要介绍了Python切换版本问题,感兴趣的可以了解一下
    2021-07-07
  • 详解Python核心编程中的浅拷贝与深拷贝

    详解Python核心编程中的浅拷贝与深拷贝

    本片文章给大家讲述了Python核心编程中的浅拷贝与深拷贝的相关知识点,有需要的朋友跟着学习下吧。
    2018-01-01
  • 分布式训练training-operator和pytorch-distributed RANK变量不统一解决

    分布式训练training-operator和pytorch-distributed RANK变量不统一解决

    这篇文章主要介绍了分布式训练training-operator和pytorch-distributed RANK变量不统一问题的解决方案详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-04-04
  • django的autoreload机制实现

    django的autoreload机制实现

    这篇文章主要介绍了django的autoreload机制实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-06-06
  • Python机器学习NLP自然语言处理基本操作电影影评分析

    Python机器学习NLP自然语言处理基本操作电影影评分析

    本文是Python机器学习NLP自然语言处理系列文章,带大家开启一段学习自然语言处理 (NLP) 的旅程。本篇文章主要学习NLP自然语言处理基本操电影影评分析
    2021-09-09
  • nginx黑名单和django限速,最简单的防恶意请求方法分享

    nginx黑名单和django限速,最简单的防恶意请求方法分享

    今天小编就为大家分享一篇nginx黑名单和django限速,最简单的防恶意请求方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-08-08
  • Python 读取位于包中的数据文件

    Python 读取位于包中的数据文件

    这篇文章主要介绍了Python 如何读取位于包中的数据文件,帮助大家更好的理解和学习Python,感兴趣的朋友可以了解下
    2020-08-08
  • python画图--输出指定像素点的颜色值方法

    python画图--输出指定像素点的颜色值方法

    今天小编就为大家分享一篇python画图--输出指定像素点的颜色值方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-07-07

最新评论