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 zip文件 压缩
Dec 24 Python
python线程锁(thread)学习示例
Dec 04 Python
Python continue语句用法实例
Mar 11 Python
wxPython事件驱动实例详解
Sep 28 Python
python迭代器与生成器详解
Mar 10 Python
python rsa 加密解密
Mar 20 Python
python 输入一个数n,求n个数求乘或求和的实例
Nov 13 Python
python进行文件对比的方法
Dec 24 Python
Python字符串对象实现原理详解
Jul 01 Python
Django-xadmin后台导入json数据及后台显示信息图标和主题更改方式
Mar 11 Python
python 密码学示例——理解哈希(Hash)算法
Sep 21 Python
python实现数据结构中双向循环链表操作的示例
Oct 09 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实现多张图片上传加水印技巧
2013/04/18 PHP
php实现保存submit内容之后禁止刷新
2014/03/19 PHP
php防止伪造数据从地址栏URL提交的方法
2014/08/24 PHP
JS 动态加载脚本的4种方法
2009/05/05 Javascript
解决js正则匹配换行问题实现代码
2012/12/10 Javascript
使用jQuery validate 验证注册表单实例演示
2013/03/25 Javascript
优化Node.js Web应用运行速度的10个技巧
2014/09/03 Javascript
使表格的标题列可左右拉伸jquery插件封装
2014/11/24 Javascript
基于jquery和svg实现超炫酷的动画特效
2014/12/09 Javascript
JQuery异步获取返回值中文乱码的解决方法
2015/01/29 Javascript
实例详解angularjs和ajax的结合使用
2015/10/22 Javascript
JavaScript实现简单Tip提示框效果
2016/04/20 Javascript
Bootstrap轮播插件简单使用方法介绍
2016/06/21 Javascript
基于jQuery的select下拉框选择触发事件实例分析
2016/11/18 Javascript
使用UrlConnection实现后台模拟http请求的简单实例
2017/01/04 Javascript
js Canvas绘制圆形时钟教程
2017/02/06 Javascript
微信小程序--组件(swiper)详细介绍
2017/06/13 Javascript
vue 项目如何引入微信sdk接口的方法
2017/12/18 Javascript
Vue 2.5.2下axios + express 本地请求404的解决方法
2018/02/21 Javascript
js html实现计算器功能
2018/11/13 Javascript
vue路由对不同界面进行传参及跳转的总结
2019/04/20 Javascript
JavaScript 斐波那契数列 倒序输出 输出100以内的质数代码实例
2019/09/11 Javascript
vue 实现走马灯效果
2019/10/28 Javascript
[04:47]DOTA2-潍坊风行电子俱乐部探秘
2014/08/08 DOTA
django admin 后台实现三级联动的示例代码
2018/06/22 Python
Python+pandas计算数据相关系数的实例
2018/07/03 Python
Flask web开发处理POST请求实现(登录案例)
2018/07/26 Python
关于tf.nn.dynamic_rnn返回值详解
2020/01/20 Python
给ubuntu18安装python3.7的详细教程
2020/06/08 Python
主要的Ajax框架都有什么
2013/11/14 面试题
初入社会应届生求职信
2013/11/18 职场文书
党支部活动策划方案
2014/08/18 职场文书
检讨书范文2000字
2015/01/28 职场文书
暂住证明怎么写
2015/06/19 职场文书
2015年国庆节广播稿
2015/08/19 职场文书
2016年社区“我们的节日·中秋节”活动总结
2016/04/05 职场文书