ブリッジモード
概要概要
- 物の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()
利点