《精通Python设计模式》学习结构型之适配器模式
2024-10-21 04:10:41
大名鼎鼎~~
在兼容老系统和其它系统外调用时,用得着~
class Synthesizer: def __init__(self, name): self.name = name def __str__(self): return 'the {} synthesizer'.format(self.name) def play(self): return 'is playing an electronic song' class Human: def __init__(self, name): self.name = name def __str__(self): return '{} the human'.format(self.name) def speak(self): return 'says hello'
from extenrnal import Synthesizer, Human class Computer: def __init__(self, name): self.name = name def __str__(self): return 'the {} computer'.format(self.name) def execute(self): return 'executes a program' class Adapter: def __init__(self, obj, adapted_methods): self.obj = obj self.__dict__.update(adapted_methods) def __str__(self): return str(self.obj) def main(): objects = [Computer('Intel')] synth = Synthesizer('moog') objects.append(Adapter(synth, dict(execute=synth.play))) human = Human('Bob') objects.append(Adapter(human, dict(execute=human.speak))) for i in objects: print('{} {}'.format(str(i), i.execute())) if __name__ == "__main__": main()
最新文章
- css样式大全
- 新手编辑c语言的注意事项
- Mysql慢查询操作梳理
- thinkphp数据表操作恐怖事件。
- 获取EXe版本信息
- MYSQL BLOB 字段大小以及个数的限制測试。
- Delphi TdxBarDockControl 用法
- extjs的button控件fireEvent('click')无效问题
- JavaScript-每隔5分钟执行一次ajax请求的实现方法
- 新建一个MVCProject 项目
- underscore 1.7.0 api
- Spring 源码学习系列
- 关于使用 myeclipse连接MySql的问题
- JavaEE 之 Spring(一)
- poj 1797 最大最小路段【dijkstra】 (经典)
- Android开发之自定义局部导航菜单
- WebService技术,服务端发布到Tomcat(使用Servlet发布),客户端使用axis2实现(二)
- MDP安装之数据库
- 开源框架:Apache的DBUtils框架
- --oracle删除数据库表(无主键)中重复的记录