首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >go: Bridge Pattern

go: Bridge Pattern

作者头像
geovindu
发布2026-06-18 17:31:33
发布2026-06-18 17:31:33
70
举报

项目结构:

代码语言:javascript
复制
/*
# 版权所有  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
}
代码语言:javascript
复制
/*
# 版权所有  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)
} 

调用:、

代码语言:javascript
复制
/*
# 版权所有  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)
} 

输出:

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2026-06-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档