Design 桥接模式

原型模式

桥接模式将一个事物一分为二,把抽象的部分和实现的部分进行抽离,达到解耦的作用。

同时,被拆分的2个部分也都可以进行独立的变化,桥接模式属于结构型模式。

特点:一分为二、独立扩展

案例图示

拿一支笔来举例,它拥有钢笔、毛笔等类型(实体)。

同时,不同的实体类型有不同的作用,如钢笔就写硬笔字(抽象),毛笔就写软笔字(抽象)

image-20210413120259280

优缺点

优点:

  • 实现抽象和现实分离,便于维护
  • 桥接模式拥有优秀的可扩展能力
  • 实现细节对用户透明

缺点:

  • 增加理解和设计难度

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实现桥接模式:

...
posted @ 2021-04-13 00:02  云崖君  阅读(52)  评论(0编辑  收藏  举报