Python设计模式——桥模式

桥模式

内容:

将一个事物的两个维度(将抽象部分与实现部分)分离,使他们可以独立地变化

角色:

抽象者

细化抽象者

实现者

具体实现者

应用场景:

当事务有两个维度上的表现,两个维度都可能扩展时

优点:

抽象和实现相分离,降低耦合

优秀的扩展能力

缺点:

系统可读性降低

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()

# 输出    
==================
来一杯吧!柠檬红茶
来一杯吧!橙子绿茶
来一杯吧!橙子乌龙茶
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值