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抽象类的新写法
Jun 18 Python
举例讲解Python中的Null模式与桥接模式编程
Feb 02 Python
Python3生成手写体数字方法
Jan 30 Python
python 实现求解字符串集的最长公共前缀方法
Jul 20 Python
python之验证码生成(gvcode与captcha)
Jan 02 Python
浅谈python requests 的put, post 请求参数的问题
Jan 02 Python
python 根据网易云歌曲的ID 直接下载歌曲的实例
Aug 24 Python
Python动态声明变量赋值代码实例
Dec 30 Python
Python生成器generator原理及用法解析
Jul 20 Python
详解Python中Pyyaml模块的使用
Oct 08 Python
python statsmodel的使用
Dec 21 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中用memcached实现页面防刷新功能
2014/08/19 PHP
PHP实现ftp上传文件示例
2014/08/21 PHP
分享一个Laravel好用的Cache宏
2015/03/02 PHP
php遍历类中包含的所有元素的方法
2015/05/12 PHP
PHP实现的网站目录扫描索引工具
2016/09/08 PHP
php实现不通过扩展名准确判断文件类型的方法【finfo_file方法与二进制流】
2017/04/18 PHP
php进程(线程)通信基础之System V共享内存简单实例分析
2019/11/09 PHP
基于php+MySql实现学生信息管理系统实例
2020/08/04 PHP
基于jquery的商品展示放大镜
2010/08/07 Javascript
关于JavaScript的with 语句的使用方法
2011/05/09 Javascript
Prototype源码浅析 String部分(二)
2012/01/16 Javascript
JS中产生20位随机数以0-9为例也可以是a-z A-Z
2014/08/01 Javascript
jQuery中parent()方法用法实例
2015/01/07 Javascript
javascript封装addLoadEvent实现页面同时加载执行多个函数的方法
2016/07/25 Javascript
jQuery stop()用法实例详解
2016/07/28 Javascript
JS重载实现方法分析
2016/12/16 Javascript
Vue.js获取被选择的option的value和text值方法
2018/08/24 Javascript
element 动态合并表格的步骤
2020/12/31 Javascript
[01:32:10]NAVI vs VG Supermajor 败者组 BO3 第一场 6.5
2018/06/06 DOTA
Sanic框架路由用法实例分析
2018/07/16 Python
Python玩转Excel的读写改实例
2019/02/22 Python
python实现beta分布概率密度函数的方法
2019/07/08 Python
pytorch中torch.max和Tensor.view函数用法详解
2020/01/03 Python
Python3 虚拟开发环境搭建过程(图文详解)
2020/01/06 Python
解决jupyter notebook import error但是命令提示符import正常的问题
2020/04/15 Python
零基础学Python之前需要学c语言吗
2020/07/21 Python
详解HTML5常用的语义化标签
2019/09/27 HTML / CSS
Room Mate Hotels美国:西班牙酒店品牌
2018/04/10 全球购物
美国儿童珠宝在线零售商:Loveivy
2019/05/22 全球购物
质检员岗位职责
2013/12/17 职场文书
职业生涯规划怎么写
2013/12/29 职场文书
《我为你骄傲》教学反思
2014/02/20 职场文书
竞选宣传委员演讲稿
2014/05/24 职场文书
开展读书活动总结
2014/06/30 职场文书
Python机器学习之基础概述
2021/05/19 Python
Vue3中toRef与toRefs的区别
2022/03/24 Vue.js