实现桥接模式和组合模式示例,添加相关类和方法,增强代码可读性
This commit is contained in:
@@ -0,0 +1,67 @@
|
||||
"""
|
||||
实例
|
||||
汤宝宝成为了一个电子画家,但是不同形状的笔刷和不同颜色颜料的组合让他犯了难...
|
||||
"""
|
||||
|
||||
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=========== 桥接模式结束 ===========")
|
||||
Reference in New Issue
Block a user