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