桥接模式(Bridge Pattern):将抽象部分与它的实现部分分离,使它们都可以独立地变化。也叫做桥梁模式。
扩展性强:抽象角色和实现角色可以非常灵活地扩展。
不适用继承或者原继承关系中抽象类可能频繁变动的情况,可以将原类进行拆分,拆成实现化角色和抽象化角色。
将两个角色之间的继承关系改为聚合关系,将它们之间的强关联改换成为弱关联。
from abc import ABCMeta,abstractmethod class Shape(metaclass=ABCMeta): def __init__(self,color): self.color = color @abstractmethod def draw(self): pass class Line(Shape): def draw(self): self.name = '直线' self.color.paint(self) class Cricle(Shape): def draw(self): self.name = '圆形' self.color.paint(self) class Color(metaclass=ABCMeta): @abstractmethod def paint(self,shape): pass class Red(Color): def paint(self,shape): print('画红色的%s'%shape.name) class Bule(Color): def paint(self,shape): print('画蓝色的%s'%shape.name) d = Line(Red()) d.draw() d = Cricle(Bule()) d.draw()
结果:
画红色的直线
画蓝色的圆形