项目结构:

Go
/*
# 版权所有 2026 ©涂聚文有限公司™ ®
# 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎
# 描述:桥接模式(Bridge Pattern)
# Author : geovindu,Geovin Du 涂聚文.
# IDE : goLang 2024.3.6 go 26.2
# os : windows 10
# database : mysql 9.0 sql server 2019, postgreSQL 17.0 Oracle 21c Neo4j
# Datetime : 2026/4/18 21:17
# User : geovindu
# Product : GoLand
# Project : godesginpattern
# File : gold.go
*/
package material
// Gold 黄金
type Gold struct{}
func (g *Gold) GetName() string {
return "黄金"
}
func (g *Gold) GetPriceRatio() float64 {
return 480.0
}
/*
# 版权所有 2026 ©涂聚文有限公司™ ®
# 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎
# 描述:桥接模式(Bridge Pattern)
# Author : geovindu,Geovin Du 涂聚文.
# IDE : goLang 2024.3.6 go 26.2
# os : windows 10
# database : mysql 9.0 sql server 2019, postgreSQL 17.0 Oracle 21c Neo4j
# Datetime : 2026/4/18 21:18
# User : geovindu
# Product : GoLand
# Project : godesginpattern
# File : jade.go
*/
package material
// Jade 翡翠
type Jade struct{}
func (j *Jade) GetName() string {
return "翡翠"
}
func (j *Jade) GetPriceRatio() float64 {
return 1200.0
}
/*
# 版权所有 2026 ©涂聚文有限公司™ ®
# 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎
# 描述:桥接模式(Bridge Pattern)
# Author : geovindu,Geovin Du 涂聚文.
# IDE : goLang 2024.3.6 go 26.2
# os : windows 10
# database : mysql 9.0 sql server 2019, postgreSQL 17.0 Oracle 21c Neo4j
# Datetime : 2026/4/18 21:17
# User : geovindu
# Product : GoLand
# Project : godesginpattern
# File : material.go
*/
package material
// Material 材质接口(实体属性抽象)
type Material interface {
GetName() string
GetPriceRatio() float64
}
/*
# 版权所有 2026 ©涂聚文有限公司™ ®
# 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎
# 描述:桥接模式(Bridge Pattern)
# Author : geovindu,Geovin Du 涂聚文.
# IDE : goLang 2024.3.6 go 26.2
# os : windows 10
# database : mysql 9.0 sql server 2019, postgreSQL 17.0 Oracle 21c Neo4j
# Datetime : 2026/4/18 21:18
# User : geovindu
# Product : GoLand
# Project : godesginpattern
# File : platinum.go
*/
package material
// Platinum 铂金
type Platinum struct{}
func (p *Platinum) GetName() string {
return "铂金"
}
func (p *Platinum) GetPriceRatio() float64 {
return 320.0
}
Go
/*
# 版权所有 2026 ©涂聚文有限公司™ ®
# 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎
# 描述:桥接模式(Bridge Pattern)
# Author : geovindu,Geovin Du 涂聚文.
# IDE : goLang 2024.3.6 go 26.2
# os : windows 10
# database : mysql 9.0 sql server 2019, postgreSQL 17.0 Oracle 21c Neo4j
# Datetime : 2026/4/18 21:18
# User : geovindu
# Product : GoLand
# Project : godesginpattern
# File : check.go
*/
package process
import (
"fmt"
"godesginpattern/bridge/material"
)
// CheckProcess 质检流程
type CheckProcess struct{}
func (c *CheckProcess) Execute(mat material.Material) {
fmt.Printf("🔍 质检 | 材质:%s 合格\n", mat.GetName())
}
/*
# 版权所有 2026 ©涂聚文有限公司™ ®
# 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎
# 描述:桥接模式(Bridge Pattern)
# Author : geovindu,Geovin Du 涂聚文.
# IDE : goLang 2024.3.6 go 26.2
# os : windows 10
# database : mysql 9.0 sql server 2019, postgreSQL 17.0 Oracle 21c Neo4j
# Datetime : 2026/4/18 21:19
# User : geovindu
# Product : GoLand
# Project : godesginpattern
# File : maintain.go
*/
package process
import (
"fmt"
"godesginpattern/bridge/material"
)
// MaintainProcess 保养流程
type MaintainProcess struct{}
func (m *MaintainProcess) Execute(mat material.Material) {
fmt.Printf("✨ 保养 | 材质:%s 抛光完成\n", mat.GetName())
}
/*
# 版权所有 2026 ©涂聚文有限公司™ ®
# 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎
# 描述:桥接模式(Bridge Pattern)
# Author : geovindu,Geovin Du 涂聚文.
# IDE : goLang 2024.3.6 go 26.2
# os : windows 10
# database : mysql 9.0 sql server 2019, postgreSQL 17.0 Oracle 21c Neo4j
# Datetime : 2026/4/18 21:18
# User : geovindu
# Product : GoLand
# Project : godesginpattern
# File : make.go
*/
package process
import (
"fmt"
"godesginpattern/bridge/material"
)
// MakeProcess 制作流程
type MakeProcess struct{}
func (m *MakeProcess) Execute(mat material.Material) {
fmt.Printf("✅ 制作 | 材质:%s\n", mat.GetName())
}
/*
# 版权所有 2026 ©涂聚文有限公司™ ®
# 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎
# 描述:桥接模式(Bridge Pattern)
# Author : geovindu,Geovin Du 涂聚文.
# IDE : goLang 2024.3.6 go 26.2
# os : windows 10
# database : mysql 9.0 sql server 2019, postgreSQL 17.0 Oracle 21c Neo4j
# Datetime : 2026/4/18 21:18
# User : geovindu
# Product : GoLand
# Project : godesginpattern
# File : process.go
*/
package process
import "godesginpattern/bridge/material"
// Process 业务流程接口(行为抽象)
type Process interface {
Execute(m material.Material)
}
/*
# 版权所有 2026 ©涂聚文有限公司™ ®
# 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎
# 描述:桥接模式(Bridge Pattern)
# Author : geovindu,Geovin Du 涂聚文.
# IDE : goLang 2024.3.6 go 26.2
# os : windows 10
# database : mysql 9.0 sql server 2019, postgreSQL 17.0 Oracle 21c Neo4j
# Datetime : 2026/4/18 21:19
# User : geovindu
# Product : GoLand
# Project : godesginpattern
# File : recycle.go
*/
package process
import (
"fmt"
"godesginpattern/bridge/material"
)
// RecycleProcess 回收流程
type RecycleProcess struct{}
func (r *RecycleProcess) Execute(mat material.Material) {
fmt.Printf("♻️ 回收 | 材质:%s 估价:%.2f 元\n", mat.GetName(), mat.GetPriceRatio()*10)
}
调用:、
Go
/*
# 版权所有 2026 ©涂聚文有限公司™ ®
# 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎
# 描述:桥接模式(Bridge Pattern)
# Author : geovindu,Geovin Du 涂聚文.
# IDE : goLang 2024.3.6 go 26.2
# os : windows 10
# database : mysql 9.0 sql server 2019, postgreSQL 17.0 Oracle 21c Neo4j
# Datetime : 2026/4/18 21:23
# User : geovindu
# Product : GoLand
# Project : godesginpattern
# File : bridgebll.go
bridge/
├── go.mod
├── main.go
├── material/
│ ├── material.go
│ ├── gold.go
│ ├── platinum.go
│ └── jade.go
└── process/
├── process.go
├── make.go
├── check.go
├── recycle.go
└── maintain.go
结构优势(桥接模式核心)
material/:只负责材质属性,可无限扩展(黄金 / 铂金 / 翡翠 / 钻石...)
process/:只负责业务流程,可无限扩展(制作 / 质检 / 回收 / 保养 / 鉴定...)
两个维度完全解耦,新增任何一个都不用修改旧代码
符合 开闭原则 + 单一职责
Go 接口 + 组合 = 天然最佳桥接模式实现
*/
package bll
import (
"fmt"
"godesginpattern/bridge/material"
"godesginpattern/bridge/process"
)
func BridgeMain() {
// 材质
gold := &material.Gold{}
platinum := &material.Platinum{}
jade := &material.Jade{}
// 流程
makeProc := &process.MakeProcess{}
checkProc := &process.CheckProcess{}
recycleProc := &process.RecycleProcess{}
maintainProc := &process.MaintainProcess{}
// 黄金
fmt.Println("\n===== 黄金珠宝 =====")
makeProc.Execute(gold)
checkProc.Execute(gold)
recycleProc.Execute(gold)
maintainProc.Execute(gold)
// 铂金
fmt.Println("\n===== 铂金珠宝 =====")
makeProc.Execute(platinum)
checkProc.Execute(platinum)
recycleProc.Execute(platinum)
maintainProc.Execute(platinum)
// 翡翠
fmt.Println("\n===== 翡翠珠宝 =====")
makeProc.Execute(jade)
checkProc.Execute(jade)
recycleProc.Execute(jade)
maintainProc.Execute(jade)
}
输出:
