码迷,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
迷上了代码!