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获取CPU和内存信息的思路与实现(linux系统)
Jan 03 Python
python调用java模块SmartXLS和jpype修改excel文件的方法
Apr 28 Python
用Python操作字符串之rindex()方法的使用
May 19 Python
python用10行代码实现对黄色图片的检测功能
Aug 10 Python
Flask入门之上传文件到服务器的方法示例
Jul 18 Python
python模块之subprocess模块级方法的使用
Mar 26 Python
python pytest进阶之xunit fixture详解
Jun 27 Python
Python自动化导出zabbix数据并发邮件脚本
Aug 16 Python
python Shapely使用指南详解
Feb 18 Python
Python爬虫实现自动登录、签到功能的代码
Aug 20 Python
python空元组在all中返回结果详解
Dec 15 Python
Python查找算法的实现 (线性、二分,分块、插值查找算法)
Apr 24 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学习笔记 IIS7下安装配置php环境
2012/10/29 PHP
php数据库备份还原类分享
2014/03/20 PHP
php实现的mongodb操作类
2015/05/28 PHP
php实现网页缓存的工具类分享
2015/07/14 PHP
分享50个提高PHP执行效率的技巧
2015/12/26 PHP
php实用代码片段整理
2016/11/12 PHP
php变量与数组相互转换的方法(extract与compact)
2016/12/02 PHP
PHP文件与目录操作示例
2016/12/24 PHP
mac系统下安装多个php并自由切换的方法详解
2017/04/21 PHP
让 JavaScript 轻松支持函数重载 (Part 2 - 实现)
2009/08/04 Javascript
学习ExtJS(一) 之基础前提
2009/10/07 Javascript
JavaScript html5 canvas画布中删除一个块区域的方法
2016/01/26 Javascript
canvas绘制万花筒效果(代码分享)
2017/01/20 Javascript
JS switch判断 三目运算 while 及 属性操作代码
2017/09/03 Javascript
node.js遍历目录的方法示例
2018/08/01 Javascript
angular 数据绑定之[]和{{}}的区别
2018/09/25 Javascript
解决layui弹框失效的问题
2019/09/09 Javascript
Layer UI表格列日期格式化及取消自动填充日期的实现方法
2020/05/10 Javascript
微信小程序实现日历签到
2020/09/21 Javascript
[49:13]DOTA2上海特级锦标赛C组资格赛#1 OG VS LGD第一局
2016/02/27 DOTA
Python创建二维数组实例(关于list的一个小坑)
2017/11/07 Python
python smtplib模块实现发送邮件带附件sendmail
2018/05/22 Python
Python实现一个数组除以一个数的例子
2019/07/20 Python
python线程中的同步问题及解决方法
2019/08/29 Python
Python 批量读取文件中指定字符的实现
2020/03/06 Python
解决django FileFIELD的编码问题
2020/03/30 Python
python上传时包含boundary时的解决方法
2020/04/08 Python
微信浏览器取消缓存的方法
2015/03/28 HTML / CSS
阿迪达斯俄罗斯官方商城:adidas俄罗斯
2017/03/08 全球购物
加拿大最大的相机店:Henry’s
2017/05/17 全球购物
Clarks鞋法国官方网站:英国其乐鞋品牌
2018/02/11 全球购物
美国儿童玩具、装扮和玩偶商店:Magic Cabin
2018/09/02 全球购物
养生餐厅创业计划书范文
2014/03/26 职场文书
MySQL如何使用使用Xtrabackup进行备份和恢复
2021/06/21 MySQL
使用CSS实现一个搜索引擎的原理解析
2021/09/25 HTML / CSS
Redis命令处理过程源码解析
2022/02/12 Redis