桥模式
内容:
将一个事物的两个维度(将抽象部分与实现部分)分离,使他们可以独立地变化
角色:
抽象者
细化抽象者
实现者
具体实现者
应用场景:
当事务有两个维度上的表现,两个维度都可能扩展时
优点:
抽象和实现相分离,降低耦合
优秀的扩展能力
缺点:
系统可读性降低
python代码实现:
from abc import ABCMeta, abstractmethod
# 抽象者,茶
# 需要先输入一种水果
class Tea(metaclass=ABCMeta):
def __init__(self, fruits):
self.fruits = fruits
@abstractmethod
def drink(self):
pass
# 实现者,水果
class Fruits(metaclass=ABCMeta):
@abstractmethod
def make(self, tea):
pass
# 具体抽象者
class BlackTea(Tea):
name = "红茶"
def drink(self):
self.fruits.make(self)
class GreenTea(Tea):
name = "绿茶"
def drink(self):
self.fruits.make(self)
class OolongTea(Tea):
name = "乌龙茶"
def drink(self):
self.fruits.make(self)
class Lemon(Fruits):
def make(self, tea):
print(f"来一杯吧!柠檬{
tea.name}")
class Orange(Fruits):
def make(self, tea):
print(f"来一杯吧!橙子{
tea.name}")
if __name__ == "__main__":
tea1 = BlackTea(Lemon())
tea1.drink()
tea2 = GreenTea(Orange())
tea2.drink()
tea3 = OolongTea(Orange())
tea3.drink()
# 输出
==================
来一杯吧!柠檬红茶
来一杯吧!橙子绿茶
来一杯吧!橙子乌龙茶