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 相关文章推荐
windows下安装python paramiko模块的代码
Feb 10 Python
Python内置的字符串处理函数详细整理(覆盖日常所用)
Aug 19 Python
Python通过PIL获取图片主要颜色并和颜色库进行对比的方法
Mar 19 Python
Python模块搜索概念介绍及模块安装方法介绍
Jun 03 Python
Python3中简单的文件操作及两个简单小实例分享
Jun 18 Python
Python实现改变与矩形橡胶的线条的颜色代码示例
Jan 05 Python
python中matplotlib的颜色及线条控制的示例
Mar 16 Python
Python 日期区间处理 (本周本月上周上月...)
Aug 08 Python
如何在Cloud Studio上执行Python代码?
Aug 09 Python
Python对象的属性访问过程详解
Mar 05 Python
python中pandas库中DataFrame对行和列的操作使用方法示例
Jun 14 Python
python 使用cycle构造无限循环迭代器
Dec 02 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+APACHE实现用户论证的方法
2006/10/09 PHP
在PHP中PDO解决中文乱码问题的一些补充
2010/09/06 PHP
php合并数组中相同元素的方法
2014/11/13 PHP
PHP双向链表定义与用法示例
2018/01/31 PHP
PHP微信网页授权的配置文件操作分析
2019/05/29 PHP
jQuery$命名冲突怎么办如何解决
2014/01/16 Javascript
JavaScript也谈内存优化
2014/06/06 Javascript
js实现tab切换效果实例
2015/09/16 Javascript
JS实现加载和读取XML文件的方法详解
2017/04/24 Javascript
Angular CLI 安装和使用教程
2017/09/13 Javascript
基于vue2实现左滑删除功能
2017/11/28 Javascript
详细介绍解决vue和jsp结合的方法
2020/02/06 Javascript
JavaScript如何实现监听键盘输入和鼠标监点击
2020/07/20 Javascript
javascript中layim之查找好友查找群组
2021/02/06 Javascript
[39:11]DOTA2上海特级锦标赛C组资格赛#2 LGD VS Newbee第二局
2016/02/28 DOTA
[03:39]这就是刀塔,我们是冠军!燃情短片讲述我们的DOTA故事
2019/07/02 DOTA
Python爬取qq music中的音乐url及批量下载
2017/03/23 Python
Python格式化输出%s和%d
2018/05/07 Python
对python 命令的-u参数详解
2018/12/03 Python
python匹配两个短语之间的字符实例
2018/12/25 Python
Python图像的增强处理操作示例【基于ImageEnhance类】
2019/01/03 Python
Python爬虫实战之12306抢票开源
2019/01/24 Python
详解Python是如何实现issubclass的
2019/07/24 Python
Pytorch 实现自定义参数层的例子
2019/08/17 Python
python将四元数变换为旋转矩阵的实例
2019/12/04 Python
Python异常继承关系和自定义异常实现代码实例
2020/02/20 Python
python GUI库图形界面开发之PyQt5信号与槽多窗口数据传递详细使用方法与实例
2020/03/08 Python
django 利用Q对象与F对象进行查询的实现
2020/05/15 Python
送给程序员的20个Java集合面试问题
2014/08/06 面试题
优秀实习生感言
2014/03/01 职场文书
年终总结会主持词
2014/03/25 职场文书
《梅花魂》教学反思
2014/04/30 职场文书
法律专业自荐信
2014/06/03 职场文书
开场白怎么写
2015/06/01 职场文书
嵌入式Redis服务器在Spring Boot测试中的使用教程
2021/07/21 Redis
Nginx的gzip相关介绍
2022/05/11 Servers