适配器可以理解为万能接口,各种类可以通过这个接口然后被调用,达到万能转换的效果。

他的实现是以我们定义的适配器函数来分类,将各种类的不同方法注册到对应的分类函数中,调用的时候只需要使用分类名,这样就达到了适配所有类不同方法的效果.

示例code

class A:def a(self):print("我是A类的a方法")

class B:def b(self):print("我是B类的b方法")

class C:def c(self):print("我是C类的c方法")

class Adapter:

def __init__(self, classname, method):self.classname = classnameself.__dict__update = methoddef __getattr__(self, attr):return getattr(self.classname, attr)

def test():objects = []AA = A()objects.append(Adapter(AA, dict(test=AA.a)))BB = B()objects.append(Adapter(BB, dict(test=BB.b)))CC = C()objects.append(Adapter(CC, dict(test=CC.c)))for obj in objects:obj.test()

test()

核心思想是创建一个适配器类,通过__dict__将需要转化的类的方法注册到适配器,复写__getattr__使其在适配器函数查无方法的时候,执行getattr魔法方法。

适配器模式包含一下三个角色:

目标抽象类:目标抽象类定义客户所需的接口,可以是一个抽象类或接口,也可以是具体类。在类适配器中,由于C#语言不支持多重继承,所以它只能是接口。

适配器类:它可以调用另一个接口,作为一个转换器,对Adaptee和Target进行适配。它是适配器模式的核心。

适配者类:适配者即被适配的角色,它定义了一个已经存在的接口,这个接口需要适配,适配者类包好了客户希望的业务方法。

python设计模式(五):适配器模式——各种类接口的合并相关推荐

  1. 设计模式之适配器模式 :外部系统接口的使用

    有过多年开发经验的开发人员都有这样的经验.不管之前的用户调研.需求分析等工作做的多么的完美.系统的需求变更总是不断变化的.所谓"智者千虑必有一失,愚者千虑必有一得".不管多么聪明的 ...

  2. python设计模式(九):外观模式

    # -*- coding:utf-8 -*- class API1: def Save(self):print('保存数据A') def Del(self):print('删除数据A') class ...

  3. python适配器模式角色_Python设计模式之适配器模式原理与用法详解

    本文实例讲述了Python设计模式之适配器模式原理与用法.分享给大家供大家参考,具体如下: 适配器模式(Adapter Pattern):将一个类的接口转换成为客户希望的另外一个接口. 下面是一个适配 ...

  4. python的编程模式-Python设计模式:为了整洁又时尚的代码

    关键时刻,第一时间送达! 作者ANDREI BOYANOV - 高级软件工程师 @TOPTAL 让我们再重申一下:Python是一种具有动态类型和动态绑定的高级编程语言.我将它描述为一个强大的高级动态 ...

  5. [学习笔记]设计模式[6]-{适配器模式外观模式}

    设计原则 最少知识原则:只和你的密友谈话 这个原则的意思是,在系统设计的过程中,不要让太多的类耦合在一起,免得对系统一部分的修改会影响到其他部分.在设计系统之前,应该首先注意对象与对象之间的交互关系, ...

  6. Python设计模式-适配器模式

    Python设计模式-适配器模式 基于Python3.5.2,代码如下 #coding:utf-8class ACpnStaff:name = ""id = "" ...

  7. 设计模式 with Python 7:适配器模式

    设计模式 with Python 7:适配器模式 在本系列的前几篇文章中我提到过,设计模式事实上是编程领域的前辈为了解决某一类问题总结出来的通用解决方案,而编程这项工作其实本身也是为了用计算机语言来描 ...

  8. Python设计模式二:接口类和抽象类(Python接口设计)

    系列文章目录 Python设计模式一:面向对象编程 文章目录 系列文章目录 前言 一.接口类和抽象类是什么? 基于接口编程而非实现 二.Python里如何实现接口类和抽象类? 三.接口类和抽象类的应用 ...

  9. [Python设计模式] 第17章 程序中的翻译官——适配器模式

    github地址:https://github.com/cheesezh/python_design_patterns 适配器模式 适配器模式,将一个类的接口转换成客户希望的另外一个接口.Adapte ...

最新文章

  1. Python Qt GUI设计:窗口布局管理方法【强化】(基础篇—6)
  2. html类型转换函数,如何在JavaScript中转换数据类型?
  3. 实验四 图的实现与应用
  4. python爬虫作用小工具_【python小课堂|史上最全的Python爬虫工具列表大全】- 环球网校...
  5. java 后台输出_将后台输出动态打输出到前台并且显示
  6. Element.shadowRoot
  7. 在Spring boot 配置过滤器(filter)
  8. Python基础(八)--迭代,生成器,装饰器与元类
  9. 面试官 | AJAX请求为什么不安全?
  10. linux mysql 查询慢_linux – MySQL非常简单的SELECT查询速度极慢
  11. js正则表达式——数字校验
  12. Machine Learning lectures- 机器学习课程
  13. 中文分词:采用二元词图以及viterbi算法(一)
  14. bios开启虚拟化技术
  15. 认知神经科学常用的研究工具和技术
  16. java阳历转为阴历错了一天_Java 阴历阳历转换
  17. 组合数学——特征方程与线性递推方程
  18. C++面试常见问答题看这三篇文章就够了(上)
  19. SQL数据库修复例子
  20. 再聊面试,这次关于钱,关于培训,关于内卷

热门文章

  1. c语言程序设计风筝图案,《C语言程序设计》作业答案
  2. JAVA常用的数据结构集合框架总结
  3. 如何制作Vuejs组件,并且在项目中使用
  4. ZooKeeper入门(二)Java操作zookeeper
  5. 基于神经网络的混合计算(DNC)-Hybrid computing using a NN with dynamic external memory
  6. oracle 怎么拼,ORACLE 简化拼接
  7. [收藏] 微软850位顶级人才不做Windows研发
  8. 【Android Studio安装部署系列】十一、Android studio获取数字签名信息
  9. 【SQLite】简单的基本使用步骤
  10. Laravel- 数据库迁移