デザインパターン-構造-ブリッジパターン

ブリッジモード

概要概要

  • 物の2つの次元を分離して、独立して変更できるようにします

オブジェクト

  • 抽象化
  • 抽象化を洗練する(RefindAbstraction)
  • 実装者
  • コンクリート実装者(ConcreteImplementor)

該当シーン

  • 物事が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 Circular(Shape):
    name = "圆"
    def draw(self):
        self.color.paint(self)

class Red(Color):
    name = "红色"
    def paint(self, shape):
        print(f"{Red.name}的{shape.name}")

class Blue(Color):
    name = "蓝色"
    def paint(self, shape):
        print(f"{Blue.name}的{shape.name}")

rectangle = Rectangle(Red())
rectangle.draw()

利点

  • 抽象化と実現の分離
  • 優れたスケーラビリティ

おすすめ

転載: blog.csdn.net/DALAOS/article/details/113725671