<Python设计模式>-桥模式

文章目录

1 概述

将一个事物的两个维度分离,使其可以独立地变化
一个图形的形状和一个图形的颜色,形状和颜色是两个不同的维度

角色

  • 抽象
  • 细化抽象
  • 实现者
  • 具体实现者

使用场景

  • 抽象和实现相分离
  • 优秀的扩展能力

2 代码实现

from abc import ABCMeta, abstractmethod


class Shape(metaclass=ABCMeta):
    def __init__(self, color):
        self.color= color

    @abstractmethod
    def draw(self):
        pass


class Color(metaclass=ABCMeta):
    @abstractmethod
    def paint(self, shape):
        pass


class Rectangle(Shape):
    name = "长方形"
    def draw(self):
        self.color.paint(self)

class Circle(Shape):
    name = "圆形"
    def draw(self):
        self.color.paint(self)



class Red(Color):
    def paint(self, shape):
        print("红色的%s"%shape.name)


class Green(Color):
    def paint(self, shape):
        print('绿色的%s'%shape.name)


shape1 = Rectangle(Red())

shape1.draw()

shape2 = Circle(Green())

shape2.draw()

"""
OUT:
红色的长方形
绿色的圆形
"""
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Python设计模式是一种用于解决特定问题的可重复使用的解决方案。在Python中,有许多常见的设计模式,如单例模式、工厂模式、观察者模式等。这些设计模式可以帮助开发人员更好地组织和管理代码,提高代码的可维护性和可扩展性。 在引用\[1\]中,我们介绍了模式,它是一种结构类设计模式模式可以用于解耦抽象和实现部分,使它们可以独立地变化。在一个画图程序中,模式可以用于将图形和画笔进行解耦,使它们可以独立地变化。通过模式,我们可以定义不同类型的画笔,并将其与不同的图形进行组合,从而实现不同类型的图形绘制。 在引用\[2\]中,我们展示了如何使用模式来构造多种画笔。通过继承和重写父类的方法,我们可以定义不同类型的画笔,如普通画笔和画刷。每种画笔都有自己的绘制方法,并可以接受不同类型的图形作为参数进行绘制。 在引用\[3\]中,我们提到了Python原生不支持静态分派,但可以通过访问者模式实现一种基于类的“双分派效果”。访问者模式是一种行为类设计模式,它可以在运行时根据对象的类型动态选择方法的调用。通过访问者模式,我们可以实现多分派,即根据两个对象的类型选择不同的方法进行调用。 总之,Python设计模式是一种用于解决特定问题的可重复使用的解决方案。在Python中,有许多常见的设计模式,如模式、访问者模式等,它们可以帮助开发人员更好地组织和管理代码。 #### 引用[.reference_title] - *1* *2* *3* [Python的23种设计模式(完整版带源码实例)](https://blog.csdn.net/huangbangqing12/article/details/128655980)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

kobe_OKOK_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值