惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

The Register - Security
The Register - Security
P
Privacy International News Feed
月光博客
月光博客
博客园 - 聂微东
Blog — PlanetScale
Blog — PlanetScale
V
Visual Studio Blog
Y
Y Combinator Blog
酷 壳 – CoolShell
酷 壳 – CoolShell
Google DeepMind News
Google DeepMind News
罗磊的独立博客
Vercel News
Vercel News
Last Week in AI
Last Week in AI
A
About on SuperTechFans
P
Proofpoint News Feed
M
MIT News - Artificial intelligence
人人都是产品经理
人人都是产品经理
H
Hackread – Cybersecurity News, Data Breaches, AI and More
博客园_首页
T
Tailwind CSS Blog
GbyAI
GbyAI
S
Schneier on Security
L
LINUX DO - 热门话题
C
CERT Recently Published Vulnerability Notes
AWS News Blog
AWS News Blog
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
The Hacker News
The Hacker News
N
News and Events Feed by Topic
云风的 BLOG
云风的 BLOG
博客园 - 【当耐特】
C
Cybersecurity and Infrastructure Security Agency CISA
I
Intezer
V2EX - 技术
V2EX - 技术
The GitHub Blog
The GitHub Blog
Scott Helme
Scott Helme
V
V2EX
IT之家
IT之家
S
SegmentFault 最新的问题
爱范儿
爱范儿
L
LangChain Blog
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
MongoDB | Blog
MongoDB | Blog
S
Security Affairs
Security Latest
Security Latest
T
The Blog of Author Tim Ferriss
P
Proofpoint News Feed
S
Secure Thoughts
MyScale Blog
MyScale Blog
F
Fortinet All Blogs
Hugging Face - Blog
Hugging Face - Blog
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed

博客园 - ®Geovin Du Dream Park™

go: Functional Options Pattern go:Timing Functions Pattern python: Timing Functions Pattern go: Steady-State Pattern python: Steady-State Pattern go: Handshaking Pattern python: Handshaking Pattern go: Fail-Fast Pattern python: Fail-Fast Pattern I go: Deadline Pattern python: Deadline Pattern go: Circuit-Breaker Pattern python: Circuit-Breaker Pattern go: Bulkheads Pattern python: Bulkheads Pattern go: Push & Pull Pattern python: Push & Pull Pattern python: Publish/Subscribe Pattern II go: Publish/Subscribe Pattern python: Publish/Subscribe Pattern go: Futures & Promises Pattern python: Futures & Promises Pattern go: Worker Pool Pattern go:Pipeline Pattern python: Worker Pool Pattern python: Pipeline Pattern go: Fan-Out Pattern python: Fan-Out Pattern go: Fan-In Pattern python: Fan-In Pattern Fan-In go: Producer Consumer  Pattern python: Producer Consumer Pattern go: Parallelism Pattern python: Parallelism Pattern go: Reactor Pattern python: Reactor Pattern go: Generators Pattern python: speech to text offline python: Generators Pattern go: Coroutines Pattern python:Coroutines Pattern go: Broadcast Pattern python: Broadcast Pattern python: Bounded Parallelism Pattern go: Bounded Parallelism Pattern python: N-Barrier Pattern go: N-Barrier Pattern python: Semaphore Pattern go: Semaphore Pattern python: Read-Write Lock Pattern go: Read-Write Lock Pattern python: Monitor Pattern go: Monitor Pattern python: Mutex Pattern go: Lock/Mutex Pattern Python: Condition Variable Pattern go:Condition Variable Pattern python: Registry Pattern python: Interpreter Pattern go: Interpreter Pattern go: Memento Pattern go: Command Pattern go: State Pattern go:Template Method Pattern go: Strategy Pattern go: Visitor Pattern go: Observer Pattern go: Mediator Pattern go: Iterator Pattern go: Chain of Responsibility Pattern go: Proxy Pattern go:Decorator Pattern go: Facade Pattern go: Flyweight Pattern go: Composite Pattern go: Singleton Pattern go: Prototype Pattern go: Bridge Pattern go: Adapter Pattern go: Builder Pattern 密码进行加盐哈希 using CSharp,Python,Go,Java go: Abstract Factory Pattern go: Model,Interface,DAL ,Factory,BLL using mysql go: Simple Factory Pattern go: Factory Method Pattern go: goLang 在Windows环境搭建Go语言开发环境 CSharp: Parallel Extensions cpp: class python: 蝴蝶跟随鼠标 javascript: 中国历史人物热力分布图using echart javascript: 中国历史人物热力图 python: 初养龙虾微信纯文字自动回复using workBuddy python: object 入门 python: Factory Method Pattern python: Simple Factory Pattern python: Abstract Factory Pattern 区域化 代码 python: Null Object Pattern python: Builder Pattern python: Adapter Pattern
go: Registry Pattern
®Geovin Du Dream Park™ · 2026-04-27 · via 博客园 - ®Geovin Du Dream Park™

项目结构:

image

/*
# 版权所有  2026 ©涂聚文有限公司™ ®
# 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎
# 描述:Registry 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/27 19:45
# User      :  geovindu
# Product   : GoLand
# Project   : godesginpattern
# File      : jewelry.go
*/
package domain

type Jewelry interface {
	Name() string
	CalcPrice(weight float64) float64
	Quality() string
}



/*
# 版权所有  2026 ©涂聚文有限公司™ ®
# 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎
# 描述:Registry 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/27 19:46
# User      :  geovindu
# Product   : GoLand
# Project   : godesginpattern
# File      : certificate.go
*/
package domain

type Certificate interface {
	Agency() string
	Auth() string
}


/*
# 版权所有  2026 ©涂聚文有限公司™ ®
# 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎
# 描述:Registry 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/27 19:45
# User      :  geovindu
# Product   : GoLand
# Project   : godesginpattern
# File      : coupon.go
*/
package domain

type Coupon interface {
	Name() string
	Calc(origin float64) float64
}


/*
# 版权所有  2026 ©涂聚文有限公司™ ®
# 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎
# 描述:Registry 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/27 19:45
# User      :  geovindu
# Product   : GoLand
# Project   : godesginpattern
# File      : craft.go
*/
package domain

type Craft interface {
	Name() string
	Fee() float64
	Process() string
}


/*
# 版权所有  2026 ©涂聚文有限公司™ ®
# 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎
# 描述:Registry 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/27 19:45
# User      :  geovindu
# Product   : GoLand
# Project   : godesginpattern
# File      : material.go
*/
package domain

type Material interface {
	Level() string
	Desc() string
}


/*
# 版权所有  2026 ©涂聚文有限公司™ ®
# 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎
# 描述:Registry 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/27 19:46
# User      :  geovindu
# Product   : GoLand
# Project   : godesginpattern
# File      : order.go
*/
package domain

type OrderStep interface {
	Step() string
	Exec() string
}


/*
# 版权所有  2026 ©涂聚文有限公司™ ®
# 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎
# 描述:Registry 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/27 19:46
# User      :  geovindu
# Product   : GoLand
# Project   : godesginpattern
# File      : payment.go
*/
package domain

type Payment interface {
	Name() string
	Pay() string
}


/*
# 版权所有  2026 ©涂聚文有限公司™ ®
# 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎
# 描述:Registry 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/27 19:46
# User      :  geovindu
# Product   : GoLand
# Project   : godesginpattern
# File      : role.go
*/
package domain

type Role interface {
	Role() string
	Perm() string
}
/*
# 版权所有  2026 ©涂聚文有限公司™ ®
# 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎
# 描述:Registry 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/27 19:45
# User      :  geovindu
# Product   : GoLand
# Project   : godesginpattern
# File      : registry.go
*/
package registry

import (
	"godesginpattern/registry/domain"
	"sync"
)

var (
	JewelryRegistry   sync.Map
	CraftRegistry     sync.Map
	CouponRegistry    sync.Map
	MaterialRegistry  sync.Map
	CertRegistry      sync.Map
	PaymentRegistry   sync.Map
	RoleRegistry      sync.Map
	OrderStepRegistry sync.Map
)

func RegisterJewelry(name string, f func() domain.Jewelry)     { JewelryRegistry.Store(name, f) }
func RegisterCraft(name string, f func() domain.Craft)         { CraftRegistry.Store(name, f) }
func RegisterCoupon(name string, f func() domain.Coupon)       { CouponRegistry.Store(name, f) }
func RegisterMaterial(name string, f func() domain.Material)   { MaterialRegistry.Store(name, f) }
func RegisterCert(name string, f func() domain.Certificate)    { CertRegistry.Store(name, f) }
func RegisterPayment(name string, f func() domain.Payment)     { PaymentRegistry.Store(name, f) }
func RegisterRole(name string, f func() domain.Role)           { RoleRegistry.Store(name, f) }
func RegisterOrderStep(name string, f func() domain.OrderStep) { OrderStepRegistry.Store(name, f) }
/*
# 版权所有  2026 ©涂聚文有限公司™ ®
# 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎
# 描述:Registry 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/27 21:00
# User      :  geovindu
# Product   : GoLand
# Project   : godesginpattern
# File      : diamond.go
*/
package jewelry

import (
	"fmt"
	"godesginpattern/registry/domain"
	"godesginpattern/registry/registry"
)

type Diamond struct{}

func (d *Diamond) Name() string                { return "钻石" }
func (d *Diamond) CalcPrice(w float64) float64 { return w * 10000 }
func (d *Diamond) Quality() string             { return "4C标准" }

func init() {
	fmt.Println("✅ 钻石注册成功")
	registry.RegisterJewelry("diamond", func() domain.Jewelry {
		return &Diamond{}
	})
}



/*
# 版权所有  2026 ©涂聚文有限公司™ ®
# 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎
# 描述:Registry 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/27 19:47
# User      :  geovindu
# Product   : GoLand
# Project   : godesginpattern
# File      : gold.go
*/
package jewelry

import (
	"godesginpattern/registry/domain"
	"godesginpattern/registry/registry"
)

type Gold struct{}

func (g *Gold) Name() string                { return "黄金" }
func (g *Gold) CalcPrice(w float64) float64 { return w*600 + 50 }
func (g *Gold) Quality() string             { return "足金999" }

func init() {
	registry.RegisterJewelry("gold", func() domain.Jewelry {
		return &Gold{}
	})
}


/*
# 版权所有  2026 ©涂聚文有限公司™ ®
# 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎
# 描述:Registry 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/27 21:08
# User      :  geovindu
# Product   : GoLand
# Project   : godesginpattern
# File      : jade.go
*/
package jewelry

import (
	"godesginpattern/registry/domain"
	"godesginpattern/registry/registry"
)

type Jade struct{}

func (j *Jade) Name() string                { return "翡翠" }
func (j *Jade) CalcPrice(w float64) float64 { return w*5000 + 100 }
func (j *Jade) Quality() string             { return "A货翡翠" }
func init()                                 { registry.RegisterJewelry("jade", func() domain.Jewelry { return &Jade{} }) }


/*
# 版权所有  2026 ©涂聚文有限公司™ ®
# 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎
# 描述:Registry 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/27 21:07
# User      :  geovindu
# Product   : GoLand
# Project   : godesginpattern
# File      : pearl.go
*/
package jewelry

import (
	"godesginpattern/registry/domain"
	"godesginpattern/registry/registry"
)

type Pearl struct{}

func (p *Pearl) Name() string                { return "珍珠" }
func (p *Pearl) CalcPrice(w float64) float64 { return w*200 + 20 }
func (p *Pearl) Quality() string             { return "海水珍珠" }
func init()                                  { registry.RegisterJewelry("pearl", func() domain.Jewelry { return &Pearl{} }) }


/*
# 版权所有  2026 ©涂聚文有限公司™ ®
# 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎
# 描述:Registry 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/27 21:07
# User      :  geovindu
# Product   : GoLand
# Project   : godesginpattern
# File      : platinum.go
*/
package jewelry

import (
	"godesginpattern/registry/domain"
	"godesginpattern/registry/registry"
)

type Platinum struct{}

func (p *Platinum) Name() string                { return "铂金" }
func (p *Platinum) CalcPrice(w float64) float64 { return w*300 + 30 }
func (p *Platinum) Quality() string             { return "PT950" }
func init()                                     { registry.RegisterJewelry("platinum", func() domain.Jewelry { return &Platinum{} }) }
/*
# 版权所有  2026 ©涂聚文有限公司™ ®
# 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎
# 描述:Registry 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/27 21:11
# User      :  geovindu
# Product   : GoLand
# Project   : godesginpattern
# File      : 18k.go
*/
package material

import (
	"godesginpattern/registry/domain"
	"godesginpattern/registry/registry"
)

type K18 struct{}

func (m *K18) Level() string { return "18K金" }
func (m *K18) Desc() string  { return "75%黄金,硬度高" }
func init()                  { registry.RegisterMaterial("18k", func() domain.Material { return &K18{} }) }


/*
# 版权所有  2026 ©涂聚文有限公司™ ®
# 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎
# 描述:Registry 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/27 21:12
# User      :  geovindu
# Product   : GoLand
# Project   : godesginpattern
# File      : 24k.go
*/
package material

import (
	"godesginpattern/registry/domain"
	"godesginpattern/registry/registry"
)

type K24 struct{}

func (m *K24) Level() string { return "24K金" }
func (m *K24) Desc() string  { return "足金999纯金" }
func init()                  { registry.RegisterMaterial("24k", func() domain.Material { return &K24{} }) }


/*
# 版权所有  2026 ©涂聚文有限公司™ ®
# 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎
# 描述:Registry 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/27 21:12
# User      :  geovindu
# Product   : GoLand
# Project   : godesginpattern
# File      : 24k.go
*/
package material

import (
	"godesginpattern/registry/domain"
	"godesginpattern/registry/registry"
)

type K24 struct{}

func (m *K24) Level() string { return "24K金" }
func (m *K24) Desc() string  { return "足金999纯金" }
func init()                  { registry.RegisterMaterial("24k", func() domain.Material { return &K24{} }) }


/*
# 版权所有  2026 ©涂聚文有限公司™ ®
# 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎
# 描述:Registry 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/27 21:02
# User      :  geovindu
# Product   : GoLand
# Project   : godesginpattern
# File      : pt950.go
*/
package material

import (
	"godesginpattern/registry/domain"
	"godesginpattern/registry/registry"
)

type PT950 struct{}

func (m *PT950) Level() string { return "PT950铂金" }
func (m *PT950) Desc() string  { return "95%铂金材质" }
func init()                    { registry.RegisterMaterial("pt950", func() domain.Material { return &PT950{} }) }


/*
# 版权所有  2026 ©涂聚文有限公司™ ®
# 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎
# 描述:Registry 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/27 21:12
# User      :  geovindu
# Product   : GoLand
# Project   : godesginpattern
# File      : pt999.go
*/
package material

import (
	"godesginpattern/registry/domain"
	"godesginpattern/registry/registry"
)

type PT999 struct{}

func (m *PT999) Level() string { return "PT999铂金" }
func (m *PT999) Desc() string  { return "99.9%高纯铂金" }
func init()                    { registry.RegisterMaterial("pt999", func() domain.Material { return &PT999{} }) }
/*
# 版权所有  2026 ©涂聚文有限公司™ ®
# 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎
# 描述:Registry 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/27 19:47
# User      :  geovindu
# Product   : GoLand
# Project   : godesginpattern
# File      : order_service.go
*/
package biz

import (
	"fmt"
	"godesginpattern/registry/domain"
	"godesginpattern/registry/registry"
)

func getJewelry(name string) domain.Jewelry {
	jf, ok := registry.JewelryRegistry.Load(name)
	if !ok {
		return nil
	}
	fn, ok := jf.(func() domain.Jewelry)
	if !ok {
		return nil
	}
	return fn()
}

func getCraft(name string) domain.Craft {
	cf, ok := registry.CraftRegistry.Load(name)
	if !ok {
		return nil
	}
	fn, ok := cf.(func() domain.Craft)
	if !ok {
		return nil
	}
	return fn()
}

func getMaterial(name string) domain.Material {
	mf, ok := registry.MaterialRegistry.Load(name)
	if !ok {
		return nil
	}
	fn, ok := mf.(func() domain.Material)
	if !ok {
		return nil
	}
	return fn()
}

func getCert(name string) domain.Certificate {
	cf, ok := registry.CertRegistry.Load(name)
	if !ok {
		return nil
	}
	fn, ok := cf.(func() domain.Certificate)
	if !ok {
		return nil
	}
	return fn()
}

func getCoupon(name string) domain.Coupon {
	cf, ok := registry.CouponRegistry.Load(name)
	if !ok {
		return nil
	}
	fn, ok := cf.(func() domain.Coupon)
	if !ok {
		return nil
	}
	return fn()
}

func getPayment(name string) domain.Payment {
	pf, ok := registry.PaymentRegistry.Load(name)
	if !ok {
		return nil
	}
	fn, ok := pf.(func() domain.Payment)
	if !ok {
		return nil
	}
	return fn()
}

func getRole(name string) domain.Role {
	rf, ok := registry.RoleRegistry.Load(name)
	if !ok {
		return nil
	}
	fn, ok := rf.(func() domain.Role)
	if !ok {
		return nil
	}
	return fn()
}

func getOrderStep(name string) domain.OrderStep {
	sf, ok := registry.OrderStepRegistry.Load(name)
	if !ok {
		return nil
	}
	fn, ok := sf.(func() domain.OrderStep)
	if !ok {
		return nil
	}
	return fn()
}

func RunOrderFlow() {
	fmt.Println("======= 企业级珠宝订单系统 =======")

	jewelry := getJewelry("diamond")
	if jewelry == nil {
		fmt.Println("❌ 珠宝未加载")
		return
	}

	craft := getCraft("inlay")
	mat := getMaterial("pt950")
	cert := getCert("ngtc")
	coupon := getCoupon("full")
	payment := getPayment("wechat")
	role := getRole("manager")

	fmt.Printf("✅ 珠宝:%s | 10克价格:%.0f | 质检:%s\n",
		jewelry.Name(), jewelry.CalcPrice(10), jewelry.Quality())

	fmt.Printf("✅ 工艺:%s | 工费:%.0f | 处理:%s\n",
		craft.Name(), craft.Fee(), craft.Process())

	fmt.Printf("✅ 材质:%s | %s\n", mat.Level(), mat.Desc())
	fmt.Printf("✅ 证书:%s | %s\n", cert.Agency(), cert.Auth())

	origin := jewelry.CalcPrice(10) + craft.Fee()
	final := coupon.Calc(origin)
	fmt.Printf("✅ 优惠:%s | 原价:%.0f → 实价:%.0f\n",
		coupon.Name(), origin, final)

	fmt.Printf("✅ 支付:%s | %s\n", payment.Name(), payment.Pay())
	fmt.Printf("✅ 操作员:%s | %s\n", role.Role(), role.Perm())

	fmt.Println("\n------- 订单执行流程 -------")
	steps := []string{"create", "check", "deliver", "after"}
	for _, s := range steps {
		step := getOrderStep(s)
		if step != nil {
			fmt.Printf("✅ %s:%s\n", step.Step(), step.Exec())
		}
	}

	fmt.Println("\n========== 交易完成 ==========")
}

调用:

/*
# 版权所有  2026 ©涂聚文有限公司™ ®
# 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎
# 描述:Registry 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/27 19:47
# User      :  geovindu
# Product   : GoLand
# Project   : godesginpattern
# File      : registrybll.go

Registry/
├── go.mod                  // 项目依赖
├── main.go                 // 项目入口
├── config/                 // 配置
├── internal/               // 内部业务(核心)
│   ├── domain/             // 领域接口(定义标准)
│   │   ├── jewelry.go      // 珠宝接口
│   │   ├── craft.go        // 工艺接口
│   │   ├── coupon.go       // 优惠券接口
│   │   ├── material.go     // 材质接口
│   │   ├── certificate.go  // 证书接口
│   │   ├── payment.go      // 支付接口
│   │   ├── role.go         // 角色权限接口
│   │   └── order.go        // 订单流程接口
│   ├── registry/           // 全局注册中心(唯一入口)
│   │   └── registry.go     // 所有注册器
│   ├── service/            // 业务实现(职责单一)
│   │   ├── jewelry/
│   │   ├── craft/
│   │   ├── coupon/
│   │   ├── material/
│   │   ├── certificate/
│   │   ├── payment/
│   │   ├── role/
│   │   └── order/
│   └── biz/                // 业务组合服务
│       └── order_service.go // 订单业务编排
└── cmmon/                    // 公共工具
*/
package bll

import (
	"godesginpattern/registry/biz"
	"godesginpattern/registry/domain"
	"godesginpattern/registry/registry"

	// 👇 👇 👇 关键在这里!!!
	// 强制导入所有 service,让 init() 执行
	// 这样 /service 下的所有文件 100% 生效!!!
	_ "godesginpattern/registry/service/certificate"
	_ "godesginpattern/registry/service/coupon"
	_ "godesginpattern/registry/service/craft"
	_ "godesginpattern/registry/service/jewelry"
	_ "godesginpattern/registry/service/material"
	_ "godesginpattern/registry/service/order"
	_ "godesginpattern/registry/service/payment"
	_ "godesginpattern/registry/service/role"
)

// 手动注册所有模块,100% 成功
func registerAll() {
	// 珠宝
	registry.RegisterJewelry("diamond", func() domain.Jewelry { return &Diamond{} })
	registry.RegisterJewelry("gold", func() domain.Jewelry { return &Gold{} })

	// 工艺
	registry.RegisterCraft("inlay", func() domain.Craft { return &Inlay{} })

	// 材质
	registry.RegisterMaterial("pt950", func() domain.Material { return &PT950{} })

	// 证书
	registry.RegisterCert("ngtc", func() domain.Certificate { return &NGTC{} })

	// 优惠券
	registry.RegisterCoupon("full", func() domain.Coupon { return &FullReduce{} })

	// 支付
	registry.RegisterPayment("wechat", func() domain.Payment { return &WeChatPay{} })

	// 角色
	registry.RegisterRole("manager", func() domain.Role { return &Manager{} })

	// 订单流程
	registry.RegisterOrderStep("create", func() domain.OrderStep { return &CreateOrder{} })
	registry.RegisterOrderStep("check", func() domain.OrderStep { return &QualityCheck{} })
	registry.RegisterOrderStep("deliver", func() domain.OrderStep { return &Deliver{} })
	registry.RegisterOrderStep("after", func() domain.OrderStep { return &AfterSale{} })
}

// ==================== 临时定义,确保注册成功 ====================
type Diamond struct{}

func (d *Diamond) Name() string                { return "钻石" }
func (d *Diamond) CalcPrice(w float64) float64 { return w * 10000 }
func (d *Diamond) Quality() string             { return "4C标准" }

type Gold struct{}

func (g *Gold) Name() string                { return "黄金" }
func (g *Gold) CalcPrice(w float64) float64 { return w*600 + 50 }
func (g *Gold) Quality() string             { return "足金999" }

type Inlay struct{}

func (i *Inlay) Name() string    { return "镶嵌" }
func (i *Inlay) Fee() float64    { return 150 }
func (i *Inlay) Process() string { return "钻石爪镶" }

type PT950 struct{}

func (m *PT950) Level() string { return "PT950铂金" }
func (m *PT950) Desc() string  { return "95%铂金材质" }

type NGTC struct{}

func (c *NGTC) Agency() string { return "NGTC国检" }
func (c *NGTC) Auth() string   { return "国家珠宝玉石检验中心" }

type FullReduce struct{}

func (f *FullReduce) Name() string { return "满3000减300" }
func (f *FullReduce) Calc(o float64) float64 {
	if o >= 3000 {
		return o - 300
	}
	return o
}

type WeChatPay struct{}

func (p *WeChatPay) Name() string { return "微信支付" }
func (p *WeChatPay) Pay() string  { return "扫码支付" }

type Manager struct{}

func (r *Manager) Role() string { return "店长" }
func (r *Manager) Perm() string { return "全权限" }

type CreateOrder struct{}

func (c *CreateOrder) Step() string { return "创建订单" }
func (c *CreateOrder) Exec() string { return "支付完成" }

type QualityCheck struct{}

func (q *QualityCheck) Step() string { return "质检" }
func (q *QualityCheck) Exec() string { return "NGTC发证" }

type Deliver struct{}

func (d *Deliver) Step() string { return "发货" }
func (d *Deliver) Exec() string { return "顺丰保价" }

type AfterSale struct{}

func (a *AfterSale) Step() string { return "售后" }
func (a *AfterSale) Exec() string { return "终身保养" }

// =================================================================
func RegistryMain() {
	//registerAll()      // 强制注册
	biz.RunOrderFlow() // 运行流程
}

输出:

image

哲学管理(学)人生, 文学艺术生活, 自动(计算机学)物理(学)工作, 生物(学)化学逆境, 历史(学)测绘(学)时间, 经济(学)数学金钱(理财), 心理(学)医学情绪, 诗词美容情感, 美学建筑(学)家园, 解构建构(分析)整合学习, 智商情商(IQ、EQ)运筹(学)生存.---Geovin Du(涂聚文)