Design 桥接模式
原型模式
桥接模式将一个事物一分为二,把抽象的部分和实现的部分进行抽离,达到解耦的作用。
同时,被拆分的2个部分也都可以进行独立的变化,桥接模式属于结构型模式。
特点:一分为二、独立扩展
案例图示
拿一支笔来举例,它拥有钢笔、毛笔等类型(实体)。
同时,不同的实体类型有不同的作用,如钢笔就写硬笔字(抽象),毛笔就写软笔字(抽象)
优缺点
优点:
- 实现抽象和现实分离,便于维护
- 桥接模式拥有优秀的可扩展能力
- 实现细节对用户透明
缺点:
- 增加理解和设计难度
Python实现
用Python实现桥接模式:
#! /usr/local/bin/python3
# -*- coding:utf-8 -*-
# ----- 实体 -----
class Pen(object):
name = "钢笔"
def __init__(self, use):
self.use = use
def get_use(self):
return "%s:%s" % (self.name, self.use.desc)
class BrushPen(object):
name = "毛笔"
def __init__(self, use):
self.use = use
def get_use(self):
return "%s:%s" % (self.name, self.use.desc)
# ----- 抽象 -----
class HardPenFont(object):
@property
def desc(self):
return "可以用来写硬笔字"
class SoftPenFont(object):
@property
def desc(self):
return "可以用来写软笔字"
if __name__ == "__main__":
pen = Pen(use=HardPenFont())
brush_pen = BrushPen(use=SoftPenFont())
print(pen.get_use())
print(brush_pen.get_use())
执行结果:
钢笔:可以用来写硬字字
毛笔:可以用来写软笔字
Golang实现
用Golang实现桥接模式:
...