二十三种设计模式:适配器模式篇(Python)

二十三种设计模式:适配器模式篇Python


(1)介绍
适配器模式(Adapter Pattern),一种常用设计模式,属于结构型模式。
即为不兼容的接口打造桥梁,将一个类的接口转换成其他类所需的接口。
(2)解决问题
已有的接口放入新场景的不兼容性
(3)使用场景
创建高度重用性的类,使用适配器可放入不同场景。
已有接口的引入,使用适配器引入已有接口,不用重新构造啦。
嫁接,使用适配器可把A嫁接到B中(AB本来毫无关联)比如狼和人,狼人。
(4)核心
适配器要继承已有对象,来实现接口功能。
(5)代码
结构:将一个类的接口转换成其他类所需的接口
内容:黑暗的降临(新场景),需要人类的反抗,但女人力气弱小拿不起铁制狼牙棒(已有武器类),男人力气大可以拿起来。一位贤者,伟大的赫尔麦吉德(程序员)创造了一种神之手套(适配器),它可以让女人也拿起铁制狼牙棒。


#人类
class Person(object):
    def __init__(self):
        pass
    def connect_weapon(self,weapon):
        pass
#实例化人类A
class Girl(Person):
    def connect_weapon(self,weapon):
        print('女生只能拿起木制狼牙棒,要想拿起铁制狼牙棒,可能我需要一双手套')
        weapon.connect_wood()
#实例化人类B
class Man(Person):
    def connect_weapon(self,weapon):
        print('男子汉是不用手套的,快点拿起铁制狼牙棒吧')
        weapon.connect_iron()

#手套类
class Glove(object):
    def __init__(self):
        self._weapon = IronWeapon()
    def connect_wood(self):
        print('我戴上了手套,我可以拿起铁制狼牙棒了')
        self._weapon.connect_iron()

#武器类
class Weapon(object):
    def __init__(self):
        pass
#实例化武器类
class IronWeapon(Weapon):
    def connect_iron(self):
        print('装备了铁制狼牙棒')

'''
A对象调用连接方法,参数是适配器
适配器调用连接方法,参数是B对象
也可适配器内部直接实例化B对象
A-适配器-B  -------这就是适配器
'''
if __name__ == '__main__':
    Rose = Girl()           #实例化Rose这个人
    iron1 = IronWeapon()   #实例化铁制狼牙棒
    glove = Glove()         #实例化手套
    Rose.connect_weapon(glove)#Rose戴上手套

    Jack = Man()            #实例化Jack这个人
    iron2 = IronWeapon()   # 实例化铁制狼牙棒
    Jack.connect_weapon(iron2)

(6)优点
类的重用性
关联两个不同的类
灵活性强
(个人练习)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值