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

推荐订阅源

宝玉的分享
宝玉的分享
IT之家
IT之家
Stack Overflow Blog
Stack Overflow Blog
Application and Cybersecurity Blog
Application and Cybersecurity Blog
腾讯CDC
P
Palo Alto Networks Blog
Spread Privacy
Spread Privacy
S
Schneier on Security
NISL@THU
NISL@THU
WordPress大学
WordPress大学
酷 壳 – CoolShell
酷 壳 – CoolShell
P
Proofpoint News Feed
T
Threatpost
Scott Helme
Scott Helme
C
Cybersecurity and Infrastructure Security Agency CISA
T
The Exploit Database - CXSecurity.com
I
Intezer
C
Check Point Blog
D
Darknet – Hacking Tools, Hacker News & Cyber Security
C
CXSECURITY Database RSS Feed - CXSecurity.com
C
Cyber Attacks, Cyber Crime and Cyber Security
S
Securelist
Security Latest
Security Latest
大猫的无限游戏
大猫的无限游戏
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
小众软件
小众软件
www.infosecurity-magazine.com
www.infosecurity-magazine.com
云风的 BLOG
云风的 BLOG
量子位
T
Tor Project blog
博客园 - 叶小钗
The Cloudflare Blog
Simon Willison's Weblog
Simon Willison's Weblog
T
Tailwind CSS Blog
W
WeLiveSecurity
Hacker News - Newest:
Hacker News - Newest: "LLM"
Attack and Defense Labs
Attack and Defense Labs
S
Security Affairs
罗磊的独立博客
Know Your Adversary
Know Your Adversary
Engineering at Meta
Engineering at Meta
G
Google Developers Blog
Help Net Security
Help Net Security
美团技术团队
P
Privacy International News Feed
The Hacker News
The Hacker News
Hugging Face - Blog
Hugging Face - Blog
MongoDB | Blog
MongoDB | Blog
N
Netflix TechBlog - Medium
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知

博客园 - ®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: Registry 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 密码进行加盐哈希 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: Builder Pattern
®Geovin Du D · 2026-04-18 · via 博客园 - ®Geovin Du Dream Park™

项目结构:

image

jewelry-builder/
├── go.mod          // Go 模块文件
├── main.go         // 客户端:入口调用
├── product/        // 产品层:成品珠宝
│   └── jewelry.go
├── builder/        // 建造者层:抽象+具体建造者
│   ├── builder.go      // 抽象建造者接口
│   ├── ring_builder.go // 钻戒建造者
│   └── necklace_builder.go // 项链建造者
└── director/       // 指挥者层:控制制作流程
    └── director.go
/*
# 版权所有  2026 ©涂聚文有限公司™ ®
# 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎
# 描述:   Builder 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 6:19
# User      :  geovindu
# Product   : GoLand
# Project   : godesginpattern
# File      : jewelry.go
*/
package product

import "fmt"

// Jewelry 成品珠宝(复杂产品对象)
type Jewelry struct {
	Name       string // 珠宝名称
	Material   string // 材质
	Gem        string // 宝石
	InlayCraft string // 镶嵌工艺
	Engraving  string // 刻字
	QualityOK  bool   // 质检
}

// ShowInfo 展示成品信息
func (j *Jewelry) ShowInfo() {
	fmt.Printf("🎁 成品珠宝:%s\n", j.Name)
	fmt.Printf("├─ 材质:%s\n", j.Material)
	fmt.Printf("├─ 宝石:%s\n", j.Gem)
	fmt.Printf("├─ 镶嵌工艺:%s\n", j.InlayCraft)
	fmt.Printf("├─ 刻字:%s\n", j.Engraving)
	fmt.Printf("└─ 质检:%s\n", map[bool]string{true: "合格", false: "不合格"}[j.QualityOK])
	fmt.Println("----------------------------------------")
}
/*
# 版权所有  2026 ©涂聚文有限公司™ ®
# 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎
# 描述:Builder 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 6:19
# User      :  geovindu
# Product   : GoLand
# Project   : godesginpattern
# File      : builder.go
*/
package builder

import "godesginpattern/Builder/product"

// JewelryBuilder 抽象建造者:定义固定制作步骤
type JewelryBuilder interface {
	SetName() JewelryBuilder
	SelectMaterial() JewelryBuilder
	SelectGem() JewelryBuilder
	ChooseInlay() JewelryBuilder
	DoEngraving() JewelryBuilder
	CheckQuality() JewelryBuilder
	Build() *product.Jewelry
}




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

import "godesginpattern/Builder/product"

// DiamondRingBuilder 具体建造者:定制钻戒
type DiamondRingBuilder struct {
	jewelry *product.Jewelry
}

func NewDiamondRingBuilder() *DiamondRingBuilder {
	return &DiamondRingBuilder{jewelry: &product.Jewelry{}}
}

func (b *DiamondRingBuilder) SetName() JewelryBuilder {
	b.jewelry.Name = "钻戒"
	return b
}

func (b *DiamondRingBuilder) SelectMaterial() JewelryBuilder {
	b.jewelry.Material = "铂金"
	return b
}

func (b *DiamondRingBuilder) SelectGem() JewelryBuilder {
	b.jewelry.Gem = "钻石"
	return b
}

func (b *DiamondRingBuilder) ChooseInlay() JewelryBuilder {
	b.jewelry.InlayCraft = "爪镶"
	return b
}

func (b *DiamondRingBuilder) DoEngraving() JewelryBuilder {
	b.jewelry.Engraving = "Forever Love"
	return b
}

func (b *DiamondRingBuilder) CheckQuality() JewelryBuilder {
	b.jewelry.QualityOK = true
	return b
}

func (b *DiamondRingBuilder) Build() *product.Jewelry {
	return b.jewelry
}



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

import "godesginpattern/Builder/product"

// RubyNecklaceBuilder 具体建造者:定制红宝石项链
type RubyNecklaceBuilder struct {
	jewelry *product.Jewelry
}

func NewRubyNecklaceBuilder() *RubyNecklaceBuilder {
	return &RubyNecklaceBuilder{jewelry: &product.Jewelry{}}
}

func (b *RubyNecklaceBuilder) SetName() JewelryBuilder {
	b.jewelry.Name = "红宝石项链"
	return b
}

func (b *RubyNecklaceBuilder) SelectMaterial() JewelryBuilder {
	b.jewelry.Material = "黄金"
	return b
}

func (b *RubyNecklaceBuilder) SelectGem() JewelryBuilder {
	b.jewelry.Gem = "红宝石"
	return b
}

func (b *RubyNecklaceBuilder) ChooseInlay() JewelryBuilder {
	b.jewelry.InlayCraft = "包镶"
	return b
}

func (b *RubyNecklaceBuilder) DoEngraving() JewelryBuilder {
	b.jewelry.Engraving = "平安喜乐"
	return b
}

func (b *RubyNecklaceBuilder) CheckQuality() JewelryBuilder {
	b.jewelry.QualityOK = true
	return b
}

func (b *RubyNecklaceBuilder) Build() *product.Jewelry {
	return b.jewelry
}
/*
# 版权所有  2026 ©涂聚文有限公司™ ®
# 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎
# 描述:Builder 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 6:20
# User      :  geovindu
# Product   : GoLand
# Project   : godesginpattern
# File      : director.go
*/
package director

import (
	"godesginpattern/Builder/builder"
	"godesginpattern/Builder/product"
)

// Director 指挥者:统一控制珠宝制作步骤
type Director struct {
	builder builder.JewelryBuilder
}

func NewDirector(b builder.JewelryBuilder) *Director {
	return &Director{builder: b}
}

// MakeJewelry 固定制作流程(步骤不可乱)
func (d *Director) MakeJewelry() *product.Jewelry {
	return d.builder.
		SetName().
		SelectMaterial().
		SelectGem().
		ChooseInlay().
		DoEngraving().
		CheckQuality().
		Build()
}

调用:

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

import (
	"godesginpattern/Builder/builder"
	"godesginpattern/Builder/director"
)

// 示例
func BuilderMain() {
	// 1. 制作钻戒
	ringBuilder := builder.NewDiamondRingBuilder()
	director.NewDirector(ringBuilder).MakeJewelry().ShowInfo()

	// 2. 制作红宝石项链
	necklaceBuilder := builder.NewRubyNecklaceBuilder()
	director.NewDirector(necklaceBuilder).MakeJewelry().ShowInfo()
}

输出:

5617176e-bf77-411c-acd3-55ddad22a3ed

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