基本介绍
桥接模式(Bridge)将一个事物一分为二,把抽象的部分和实现的部分进行抽离,达到解耦的作用。
同时,被拆分的2个部分也都可以进行独立的变化。
特点:一分为二、独立扩展
桥接模式属于结构型模式。
案例图示
拿一支笔来举例,它拥有钢笔、毛笔等类型(实体)。
同时,不同的实体类型有不同的作用,如钢笔就写硬笔字(抽象),毛笔就写软笔字(抽象)。
优缺点
优点:
- 实现抽象和现实分离,便于维护
- 桥接模式拥有优秀的可扩展能力
- 实现细节对用户透明
缺点:
- 增加理解和设计难度
代码实现
用Python实现桥接模式:
# 实现
class Pen:
def __init__(self, use) -> None:
self.name = "pen"
self.use = use
def getUse(self):
return "%s can write %s" % (self.name, self.use.desc)
class Brush:
def __init__(self, use) -> None:
self.name = "brush"
self.use = use
def getUse(self):
return "%s can write %s" % (self.name, self.use.desc)
# 抽象
class HardPenWords:
@property
def desc(self):
return "hard pen words"
class SoftPenWords:
@property
def desc(self):
return "soft pen words"
if __name__ == "__main__":
pen = Pen(use=HardPenWords())
brush = Brush(use=SoftPenWords())
print(pen.getUse())
print(brush.getUse())
# pen can write hard pen words
# brush can write soft pen words