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抓取网页图片示例(python爬虫)
Apr 27 Python
Python求两个list的差集、交集与并集的方法
Nov 01 Python
Python下的twisted框架入门指引
Apr 15 Python
python实现读Excel写入.txt的方法
Apr 29 Python
Django项目中用JS实现加载子页面并传值的方法
May 28 Python
Python实现随机创建电话号码的方法示例
Dec 07 Python
使用OpenCV实现仿射变换—缩放功能
Aug 29 Python
使用python 的matplotlib 画轨道实例
Jan 19 Python
python实现将字符串中的数字提取出来然后求和
Apr 02 Python
python开发一款翻译工具
Oct 10 Python
python 制作一个gui界面的翻译工具
May 14 Python
Pytorch反向传播中的细节-计算梯度时的默认累加操作
Jun 05 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 动态多文件上传
2009/01/18 PHP
thinkphp3.2.2实现生成多张缩略图的方法
2014/12/19 PHP
PHP 开发者该知道的 5 个 Composer 小技巧
2016/02/03 PHP
php 数组元素快速去重
2017/05/05 PHP
Laravel 队列使用的实现
2019/01/08 PHP
Javascript的一种模块模式
2010/09/08 Javascript
基于jquery的button默认enter事件(回车事件)。
2011/05/18 Javascript
js DOM的学习笔记
2011/12/22 Javascript
jQuery控制iFrame(实例代码)
2013/11/19 Javascript
JS中Date日期函数中的参数使用介绍
2014/01/02 Javascript
jquery操作对象数组元素方法详解
2014/11/26 Javascript
JavaScript函数的调用以及参数传递
2015/10/21 Javascript
JS封装的自动创建表格的实现代码
2016/06/15 Javascript
详解webpack 入门与解析
2018/04/09 Javascript
JavaScript反射与依赖注入实例详解
2018/05/29 Javascript
微信接入之获取用户头像的方法步骤
2019/09/23 Javascript
使用PreloadJS加载图片资源的基础方法详解
2020/02/03 Javascript
[36:37]2014 DOTA2华西杯精英邀请赛5 24 VG VS iG
2014/05/25 DOTA
[05:31]DOTA2上海特级锦标赛主赛事第三日RECAP
2016/03/05 DOTA
Django中URLconf和include()的协同工作方法
2015/07/20 Python
python互斥锁、加锁、同步机制、异步通信知识总结
2018/02/11 Python
pyqt5 实现 下拉菜单 + 打开文件的示例代码
2019/06/20 Python
python3.6+django2.0+mysql搭建网站过程详解
2019/07/24 Python
详解python pandas 分组统计的方法
2019/07/30 Python
使用tensorflow DataSet实现高效加载变长文本输入
2020/01/20 Python
Python range与enumerate函数区别解析
2020/02/28 Python
python dict如何定义
2020/09/02 Python
html5 video标签屏蔽右键视频另存为的js代码
2013/11/12 HTML / CSS
美国彩妆品牌:Coastal Scents
2017/04/01 全球购物
香港唯港荟酒店预订:Hotel ICON
2018/03/27 全球购物
医药类个人求职的自我评价
2014/02/12 职场文书
机关驾驶员违规检讨书
2014/09/13 职场文书
有限公司股东合作协议书
2014/10/29 职场文书
学校推普周活动总结
2015/05/07 职场文书
2015年教研室工作总结范文
2015/05/23 职场文书
天谕手游15杯全调酒配方和调酒券的获得方式
2022/04/06 其他游戏