码迷,mamicode.com
首页 > 编程语言 > 详细

《精通Python设计模式》学习结构型之适配器模式

时间:2018-08-03 16:37:40      阅读:144      评论:0      收藏:0      [点我收藏+]

标签:pre   format   play   技术分享   模式   code   __init__   适配器   div   

大名鼎鼎~~

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

技术分享图片

技术分享图片

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

    

技术分享图片

《精通Python设计模式》学习结构型之适配器模式

标签:pre   format   play   技术分享   模式   code   __init__   适配器   div   

原文地址:https://www.cnblogs.com/aguncn/p/9414181.html

踩
(0)
赞
(0)
   
举报
评论 一句话评论(0)
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!