1
0
Fork 0
design-patterns/python/bridge/main.py

68 lines
1.4 KiB
Python

"""
实例
汤宝宝成为了一个电子画家,但是不同形状的笔刷和不同颜色颜料的组合让他犯了难...
"""
from abc import ABC, abstractmethod
# 抽象类
class Paint(ABC):
@abstractmethod
def use(self) -> str:
pass
class Brush(ABC):
@abstractmethod
def draw(self) -> None:
pass
# 具体实现类
class RedPaint(Paint):
def use(self) -> str:
return "红色颜料"
class BluePaint(Paint):
def use(self) -> str:
return "蓝色颜料"
class RoundBrush(Brush):
def __init__(self, paint: Paint) -> None:
super().__init__()
self.paint = paint
def draw(self) -> None:
print("使用圆形笔刷和" + self.paint.use() + "进行绘图!")
class SquareBrush(Brush):
def __init__(self, paint: Paint) -> None:
super().__init__()
self.paint = paint
def draw(self) -> None:
print("使用方形笔刷和" + self.paint.use() + "进行绘图!")
# 绘图函数
def painting(brush: Brush) -> None:
brush.draw()
if __name__ == "__main__":
print("============= 桥接模式 =============")
red_paint = RedPaint()
blue_paint = BluePaint()
painting(RoundBrush(red_paint))
painting(SquareBrush(red_paint))
painting(RoundBrush(blue_paint))
painting(SquareBrush(blue_paint))
print("\n=========== 桥接模式结束 ===========")