1.定义
桥模式是将一个事物的两个维度分离,使其都可以独立地变化。
当事物有两个维度的表现,两个维度都可能扩展时使用。
2.实现
设定实现图形绘制类的一套接口,共有两个维度的属性:形状、颜色,并且两者都可以扩展。以下有两种实现方式:
(1)不使用桥模式
class Shape:
pass
class Rectangle(Shape):
pass
class Circle(Shape):
pass
class RedRectangle(Rectangle):
pass
class GreenRectangle(Rectangle):
pass
class RedCircle(Circle):
pass
class GreenCircle(Circle):
pass
以上代码形状和颜色两个维度是通过类的继承关系紧密结合在一起,是紧耦合。
当任何一个维度需要扩展时,就需要修改大量代码,如:颜色维度 新增了 蓝色,则需添加:
class BlueRectangle(Rectangle):
pass
class BlueCircle(Circle):
pass
需要添加的个数 = 颜色的维度新增数 * 形状维度已有数
容易造成代码冗余,提升代码维护难度。
使用桥模式可避免此类问题发生。
(2)使用桥模式
# 使用桥模式
from abc import ABCMeta, abstractmethod
# 抽象
class Shape(m