桥模式
适用于:几种类,进行任意组合时的一种设计模式
from abc import ABCMeta, abstractmethod
# 形状
class Shape(metaclass=ABCMeta):
# 在使用形状时 设定需要先输入一个颜色 桥模式的桥
# 在实际使用中传入两个对象,一个是输入的对象, 另一个是自身对象
# 输入的对象被赋值给了 color
def __init__(self, color):
self.color = color
@abstractmethod
def draw(self):
pass
# 颜色
class Color(metaclass=ABCMeta):
@abstractmethod
def paint(self, shape):
pass
class Re(Shape):
name = "方形"
def draw(self):
# 关键在这一步
# 在实际使用中传入两个对象,一个是输入的对象, 另一个是自身对象
# 输入的对象被赋值给了 color
# 我们需要调用的是 输入的对象 的方法.paint()
# self 把自己作为参数传递给 self.color.paint() 这个函数 套娃了属于是
self.color.paint(self)
class Red(Color):
def paint(self, shape):
print("红色的", shape.name)
# 可以任意选择 形状(颜色)
# 通过拓展 新的形状类 与 颜色类 来丰富组合
# 这就是 桥模式
s = Re(Red())
s.draw()



