橋模式
適用於:幾種類,進行任意組合時的一種設計模式
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()
Make a little progress every d