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使用os模块的os.walk遍历文件夹示例
Jan 27 Python
python使用百度翻译进行中翻英示例
Apr 14 Python
Python实现的飞速中文网小说下载脚本
Apr 23 Python
使用Python编写一个最基础的代码解释器的要点解析
Jul 12 Python
解决pandas .to_excel不覆盖已有sheet的问题
Dec 10 Python
详解Python3 基本数据类型
Apr 19 Python
Django中间件拦截未登录url实例详解
Sep 03 Python
在Tensorflow中实现梯度下降法更新参数值
Jan 23 Python
Python tkinter 下拉日历控件代码
Mar 04 Python
浅谈pymysql查询语句中带有in时传递参数的问题
Jun 05 Python
Django QuerySet查询集原理及代码实例
Jun 13 Python
使用Python+Appuim 清理微信的方法
Jan 26 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
thinkphp模板继承实例简述
2014/11/26 PHP
php执行多个存储过程的方法【基于thinkPHP】
2016/11/08 PHP
PHP实现链式操作的三种方法详解
2017/11/16 PHP
PHP连续签到功能实现方法详解
2019/12/04 PHP
jquery 全局AJAX事件使用代码
2010/11/05 Javascript
javascript算法学习(直接插入排序)
2011/04/12 Javascript
js复制网页内容并兼容各主流浏览器的代码
2013/12/17 Javascript
JavaScript新窗口与子窗口传值详解
2014/02/11 Javascript
JQuery基础语法小结
2015/02/27 Javascript
jQuery实现表格颜色交替显示的方法
2015/03/09 Javascript
深入理解js中this的用法
2016/05/28 Javascript
JS中的==运算: [''] == false —>true
2016/07/24 Javascript
JQuery遍历元素的父辈和祖先的方法
2016/09/18 Javascript
js实现鼠标跟随运动效果
2020/08/02 Javascript
简单了解小程序+node梳理登陆流程
2019/06/24 Javascript
Sublime Text3 配置 NodeJs 环境的方法
2020/05/20 NodeJs
[00:39]DOTA2上海特级锦标赛 Liquid战队宣传片
2016/03/04 DOTA
python中使用pyhook实现键盘监控的例子
2014/07/18 Python
python使用自定义user-agent抓取网页的方法
2015/04/15 Python
Python中selenium实现文件上传所有方法整理总结
2017/04/01 Python
Python 实现字符串中指定位置插入一个字符
2018/05/02 Python
Python切片索引用法示例
2018/05/15 Python
在python里协程使用同步锁Lock的实例
2019/02/19 Python
Python读取文件内容为字符串的方法(多种方法详解)
2020/03/04 Python
Docker如何部署Python项目的实现详解
2020/10/26 Python
纯css3无js实现的Android Logo(有简单动画)
2013/01/21 HTML / CSS
印尼最大的网上书店:Gramedia.com
2018/09/13 全球购物
托管代码(Managed Code)和非托管代码(Unmanaged Code)有什么区别
2014/09/29 面试题
企业治理工作自我评价
2013/09/26 职场文书
大专生的学习自我评价
2013/12/04 职场文书
大学英语演讲稿(中英文对照)
2014/01/14 职场文书
国培教师自我鉴定
2014/02/12 职场文书
高三励志标语
2014/06/05 职场文书
团队激励口号
2014/06/06 职场文书
未婚证明书模板
2014/10/08 职场文书
婚宴致辞
2015/07/28 职场文书