打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
适配器模式

什么是适配器模式?

将一个接口转换成客户需要的接口,已达到在新对象中python基础教程使用以前的旧接口。属于结构型模式,该模式主要解决对以前旧接口的兼容性。

UML类图

对象适配器

'''示例: 键盘PS2圆形接口转USB接口'''

import abc# 目标接口

class AbsUSB(abc.ABC): @abc.abstractmethod

@abc.abstractmethod

def print(self): ...# 以前旧接口

class AbsPS2(abc.ABC): @abc.abstractmethod

@abc.abstractmethod

def out(self): ...# 旧对象

class KeyboardPS2(AbsPS2):

def out(self):

return "ps2"

# 适配器

class Adapter(AbsUSB):

def __init__(self, ps2: AbsPS2): self.ps2

self.ps2 = ps2

def print(self):

'让旧ps2接口 兼容 usb 接口'

s = self.ps2.out()

return s + " to usb"

if __name__ == "__main__": ps2

ps2 = KeyboardPS2() # 旧对象 usb = Adapter(ps2) # 通过适配器把旧对象转换成目标对象接口

p = usb.print()

print(p)

类适配器

'''示例:  键盘PS2圆形接口转USB接口

类适配器模式是采用多继承的方式来实现'''

import abc# 目标接口class AbsUSB(abc.ABC): @abc.abstractmethod

@abc.abstractmethod

def print(self): ...# 以前旧接口

class AbsPS2(abc.ABC): @abc.abstractmethod

@abc.abstractmethod

def out(self): ...# 旧对象

class KeyboardPS2(AbsPS2):

def out(self):

return "ps2"# 适配器

class PS2AdapterUSB(AbsUSB, KeyboardPS2):

def print(self):

'让旧ps2接口 兼容 usb 接口'

s = self.out()

return s + " to usb"

if __name__ == "__main__": usb

usb = PS2AdapterUSB()

# 通过适配器把旧对象转换成目标对象接口

p = usb.print()

print(p)

类适配器模式与对象适配器模式区别

类适配器是通过继承具体类型来实现的,强行把他们耦合在一起了;
对象适配器比类适配器更灵活和抽象,实现对具体类型解耦。

推荐使用对象适配器

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
一日一技:在 Python 中编写抽象类
多态及多态性和鸭子类型
python
写好 Python 代码的5条重要技巧
设计模式之装饰模式
【奇酷】第一次插USB,你需要试几次?
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服