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

输出:

相关推荐
Fate_I_C1 小时前
Kotlin 为什么是 Android 开发的首选语言
android·开发语言·kotlin
格鸰爱童话2 小时前
python录音转文字
开发语言·python
常利兵2 小时前
Kotlin 助力 Android 启动“大提速”
android·开发语言·kotlin
黎梨梨梨_2 小时前
C++入门基础(上)(namespace和缺省参数)
开发语言·c++
卢锡荣2 小时前
单芯双 C 盲插,一线通显电 ——LDR6020P 盲插 Type‑C 显示器方案深度解析
c语言·开发语言·ios·计算机外设·电脑
legendary_1632 小时前
PD显示器方案新维度:Type-C充电,投屏,显示技术革新
c语言·开发语言·计算机外设
ic爱吃蓝莓2 小时前
美团测开一面
java·开发语言
sghuter2 小时前
AI赋能CI/CD:Gemini实战脚本生成
开发语言·人工智能·ci/cd·青少年编程·r语言
me8322 小时前
【深入java语句】关于System.out.println();的底层逻辑
java·开发语言