Python设计模式之适配器模式原理与用法详解

yipeiwu_com7年前Python基础

本文实例讲述了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 Socket编程技巧总结》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》及《Python入门与进阶经典教程

希望本文所述对大家Python程序设计有所帮助。

相关文章

Python使用Flask-SQLAlchemy连接数据库操作示例

本文实例讲述了Python使用Flask-SQLAlchemy连接数据库操作。分享给大家供大家参考,具体如下: 需要安装flask pip install flask 安装My...

基于Django模板中的数字自增(详解)

基于Django模板中的数字自增(详解)

Django框架的模板提供了{% for %} 标签来进行循环 例如对集合进行循环是比较简单的 {% for row in v1 %} <div>{{row.name}}...

python查看模块,对象的函数方法

python查看模块,对象的函数方法

这段时间在用libev的python版本事件模型,总共只有一个py.so文件,没有.py文件查看源码查看接口,最开始用shell命令直接查看.so的接口不尽人意。然后发现python提供...

Python利用WMI实现ping命令的例子

WMI是Windows系统的一大利器,Python的win32api库提供了对WMI的支持,安装win32api即可使用 WMI。 本例通过WMI的WQL实现ping命令。 impo...

Python提取支付宝和微信支付二维码的示例代码

Python提取支付宝和微信支付二维码的示例代码

支付宝或者微信支付导出的收款二维码,除了二维码部分,还有很大一块背景图案,例如下面就是微信支付的收款二维码: 有时候我们仅仅只想要图片中间的方形二维码部分,为了提取出中间部分,我们可以...