桥接模式(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()

结果:

画红色的直线
画蓝色的圆形

posted on 2019-12-13 16:35  longfei2021  阅读(101)  评论(0编辑  收藏  举报