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

输出:

相关推荐
caimouse1 小时前
ReactOS 窗口系统分析(23):键盘 — keyboard.c + kbdlayout.c
c语言·开发语言·计算机外设
Emily156853598701 小时前
Emerson 1C31129G03 Analog Input Module
java·开发语言·前端·plc·emerson·1c31129g03·input module
就叫_这个吧6 小时前
Java递归方法实现面包屑导航
java·开发语言
fīɡЙtīиɡ ℡6 小时前
AI 应用系统设计
java·开发语言·人工智能
聪明蛋子哟7 小时前
Stagehand v3多语言SDK:Python/Go/Rust/Java下的浏览器自动化统一方案
python·golang·rust
今天AI了吗8 小时前
Python 基础语法(一):常量、变量、输入输出与运算符
开发语言·数据库·人工智能·python·sql·深度学习·机器学习
TELL5218 小时前
selenium webdriver 第二次初始化的异常
开发语言·python
动词ing9 小时前
【C语言】自定义函数+指针入门
c语言·开发语言·算法
重生之后端学习9 小时前
283. 移动零[简单]✅
开发语言·数据结构·算法·leetcode·职场和发展
动词ing10 小时前
【C语言】结构体+文件基础
c语言·开发语言·数据结构