桥接模式在Go中通过接口组合与结构体嵌入实现抽象层与实现层解耦。抽象结构体持有一个实现层接口字段,运行时可自由替换具体实现,支持两套独立演化的类族组合扩展。
桥接模式的核心是把“抽象”和“实现”两个维度拆开,让它们可以独立变化。在 Go 里没有传统面向对象的继承层级,但通过接口组合 + 结构体嵌入,能更轻量、更清晰地实现桥接。
先分离关注点:抽象层(比如图形、消息、支付)只依赖实现层接口,不关心具体怎么执行。
Draw()、Send()、Charge()
Render()、Notify()
Go 不靠继承,而是让抽象结构体「包含」实现接口字段。这样运行时可自由替换实现,彻底解耦。
ImageRenderer),内嵌 Drawer 接口字段Drawer 的实例(如 VectorDrawer 或 RasterDrawer)Render() 方法内部调用 r.drawer.Draw() —— 具体行为由注入的实现决定桥接不是选一种算法(那是策略模式),也不是动态加行为(那是装饰器)。它的关键是「两套可独立演化的类族」。
抽象
层是 Logger(支持 Info()、Error()),实现层是 Output(支持 Write([]byte))。你可以让 ConsoleLogger 和 FileLogger 共享同一套 JSONOutput 或 PlainOutput,互不影响扩展。
基本上就这些。桥接在 Go 里不复杂,但容易忽略——只要记住:抽象结构体持有一个接口字段,并把它作为行为代理出口,就立住了。