大名鼎鼎~~

在兼容老系统和其它系统外调用时,用得着~

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()

最新文章

  1. css样式大全
  2. 新手编辑c语言的注意事项
  3. Mysql慢查询操作梳理
  4. thinkphp数据表操作恐怖事件。
  5. 获取EXe版本信息
  6. MYSQL BLOB 字段大小以及个数的限制測试。
  7. Delphi TdxBarDockControl 用法
  8. extjs的button控件fireEvent('click')无效问题
  9. JavaScript-每隔5分钟执行一次ajax请求的实现方法
  10. 新建一个MVCProject 项目
  11. underscore 1.7.0 api
  12. Spring 源码学习系列
  13. 关于使用 myeclipse连接MySql的问题
  14. JavaEE 之 Spring(一)
  15. poj 1797 最大最小路段【dijkstra】 (经典)
  16. Android开发之自定义局部导航菜单
  17. WebService技术,服务端发布到Tomcat(使用Servlet发布),客户端使用axis2实现(二)
  18. MDP安装之数据库
  19. 开源框架:Apache的DBUtils框架
  20. --oracle删除数据库表(无主键)中重复的记录

热门文章

  1. Qt ------ 截图、获取鼠标指定的RGB值
  2. range循环
  3. Kubernetes 1.5集成heapster
  4. 转:IOS里的动画
  5. js判断当前浏览器是pc端还是移动端
  6. swiper隐藏再显示出现点击不了情况
  7. [hadoop]hadoop2.6完全分布式环境搭建
  8. 【转】java格式化输出 printf 例子
  9. 【转】线程间操作无效: 从不是创建控件“textBox2” 的线程访问它。
  10. laravel new xxx 安装laravel 慢的问题