二十三种设计模式:适配器模式篇(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)优点
类的重用性
关联两个不同的类
灵活性强
(个人练习)

发布了9 篇原创文章 · 获赞 0 · 访问量 419

猜你喜欢

转载自blog.csdn.net/weixin_41901939/article/details/90522068