go: Bridge Pattern

项目结构:

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)
} 

输出:

相关推荐
槑有老呆1 天前
别再手搓 Prompt 了,那个叫"手动挡循环"
设计模式
用户6919026813392 天前
Vibe Coding 开发项目的基本范式
人工智能·设计模式·代码规范
怕浪猫3 天前
领域特定语言(Domain-Specific Language, DSL)
设计模式·程序员·架构
Larcher5 天前
AI Loop:让AI像人一样自主完成任务的核心机制
javascript·人工智能·设计模式
LDR0066 天前
Type-C 快充全面升级!LDR6601 赋能个人护理便携电机,重塑剃须刀 / 理发器新体验
c语言·开发语言
雪碧聊技术6 天前
Tree.js是什么?一文讲透
开发语言·javascript·ecmascript
码云数智-园园6 天前
C++20 Modules 模块详解
java·开发语言·spring
swordbob6 天前
NIO的channel中什么是 fd(File Descriptor,文件描述符)
java·开发语言·nio
咖啡八杯6 天前
GoF设计模式——享元模式
java·spring·设计模式·享元模式