美文网首页python设计模式
结构型模式---适配器模式

结构型模式---适配器模式

作者: woniuxia | 来源:发表于2020-04-24 16:36 被阅读0次
# -*- coding:utf-8 -*-
"""
File Name: shi_pei_qi
Author: wabi
Data: 2020/4/24 16:01
-----------------------
Info:
    适配器模式
    参考: 精通python设计模式
    适配器实现两个不兼容接口之间的兼容

-----------------------
Change Activity:
    2020/4/24: create
"""
import logging

logger = logging.getLogger(__file__)


class Synthesizer:
    def __init__(self,
                 name):
        self.name = name

    def __str__(self):
        return 'the {} synthesizer'.format(self.name)

    def play(self):
        return '一起玩耍,可以吗'


class Human:
    def __init__(self,
                 name):
        self.name = name

    def __str__(self):
        return '姓名:{}'.format(self.name)

    def speak(self):
        return self.name + ':你好'


class Computer:
    def __init__(self,
                 name):
        self.name = name

    def __str__(self):
        return '{} 电脑'.format(self.name)

    def execute(self):
        return self.name + ": 执行一个程序"


class Adapter:
    """
    适配器
    """

    def __init__(self,
                 obj,
                 adapter_methods):
        self.obj = obj
        self.__dict__.update(adapter_methods)   # 增加需要配适配的方法

    def __str__(self):
        return str(self.obj)

    def __getattr__(self, item):
        """
        访问obj属性
        :param item:
        :return:
        """
        return getattr(self.obj, item)


def main():
    objects = [Computer('华为')]
    synth = Synthesizer('moog')
    human = Human('小明')
    objects.append(Adapter(synth, dict(execute=synth.play)))
    objects.append(Adapter(human, dict(execute=human.speak)))
    for obj in objects:
        print('对象={}\nexecute:{}'.format(str(obj), obj.execute()))
        print(obj.name)


if __name__ == '__main__':
    main()

相关文章

  • 23种设计模式

    创建型 工厂模式 ( 工厂方法模式, 抽象工厂模式, 建造者模式 ) 单例模式 原型模式 结构型 适配器模式 装饰...

  • 设计模式分类汇总

    结构型 适配器模式 组合模式 桥接模式 代理模式 装饰者模式 门面模式 享元模式 行为型 责任链模式 命令模式 解...

  • 前篇

    一、常见的设计模式? 创建型:工厂方法模式、抽象工厂模式、建造者模式、原型模式、单例模式 结构型:适配器模式、桥接...

  • JavaScript设计模式

    设计模式分类(23种设计模式) 创建型单例模式原型模式工厂模式抽象工厂模式建造者模式 结构型适配器模式装饰器模式代...

  • 结构型模式:适配器模式

    文章首发:结构型模式:适配器模式 七大结构型模式之一:适配器模式。 简介 姓名 :适配器模式 英文名 :Adapt...

  • [Python-设计模式] 结构型模式- 适配器模式

    适配器模式 适配器模式是一种结构型设计模式, 它能使接口不兼容的对象能够相互合作。 适配器模式结构 对象适配器 实...

  • java23种设计模式

    创建型 抽象工厂模式工厂方法建造者模式原型模式单态模式 结构型 适配器模式桥接模式组合模式外观模式装饰者模式享元模...

  • 设计模式纲要

    设计模式分3类: 创建型5种: 工厂方法模式,抽象工厂模式,单例模式,原型模式,建造者模式 结构型7种: 适配器模...

  • 最常用的设计模式---适配器模式(C++实现)

    适配器模式属于结构型的设计模式,它是结构型设计模式之首(用的最多的结构型设计模式)。 适配器设计模式也并不复杂,适...

  • 适配器模式

    目录 1、什么是适配器模式? 2、适配器模式结构? 3、如何实现适配器模式? 4、适配器模式的特点? 5、适配器模...

网友评论

    本文标题:结构型模式---适配器模式

    本文链接:https://www.haomeiwen.com/subject/bowfwhtx.html