Modèle de conception-modèle de pont structurel

Mode pont

Aperçu

  • Séparez les deux dimensions d'une chose pour qu'elle puisse changer indépendamment

Objet

  • Abstraction
  • Affiner l'abstraction (RefindAbstraction)
  • Réalisateur
  • Mise en œuvre concrète (ConcreteImplementor)

Scène applicable

  • Lorsque les choses ont des performances en deux dimensions, et qu'il est possible de s'étendre dans chaque dimension

Exemple

# 假设我们要进行不同颜色的形状绘制时,我们通常的  
# 做法是通过继承的方式分别对不同形状与颜色组合实  
# 现类的方式,例如红色矩形,红色矩形继承矩形,矩
# 形继承形状,桥模式将形状与颜色进行解耦,使用组
# 合方式在两个维度进行扩展

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

avantage

  • Séparation de l'abstraction et de la réalisation
  • Excellente évolutivité

Je suppose que tu aimes

Origine blog.csdn.net/DALAOS/article/details/113725671
conseillé
Classement