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

推荐订阅源

Y
Y Combinator Blog
T
The Exploit Database - CXSecurity.com
Hugging Face - Blog
Hugging Face - Blog
Last Week in AI
Last Week in AI
人人都是产品经理
人人都是产品经理
博客园 - 聂微东
腾讯CDC
Stack Overflow Blog
Stack Overflow Blog
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
O
OpenAI News
阮一峰的网络日志
阮一峰的网络日志
博客园 - 【当耐特】
Forbes - Security
Forbes - Security
F
Fortinet All Blogs
Hacker News: Ask HN
Hacker News: Ask HN
Blog — PlanetScale
Blog — PlanetScale
S
Schneier on Security
雷峰网
雷峰网
I
Intezer
博客园_首页
罗磊的独立博客
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
V2EX - 技术
V2EX - 技术
G
GRAHAM CLULEY
MyScale Blog
MyScale Blog
Recent Announcements
Recent Announcements
N
News and Events Feed by Topic
T
Troy Hunt's Blog
S
Security Affairs
S
Securelist
Attack and Defense Labs
Attack and Defense Labs
IT之家
IT之家
V
Visual Studio Blog
WordPress大学
WordPress大学
T
Tenable Blog
T
Threat Research - Cisco Blogs
小众软件
小众软件
A
About on SuperTechFans
Spread Privacy
Spread Privacy
T
Tor Project blog
V
V2EX
Help Net Security
Help Net Security
Cyberwarzone
Cyberwarzone
P
Proofpoint News Feed
博客园 - 叶小钗
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
C
CERT Recently Published Vulnerability Notes
P
Proofpoint News Feed
L
LINUX DO - 热门话题
大猫的无限游戏
大猫的无限游戏

博客园 - ®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: 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: Singleton Pattern
®Geovin Du D · 2026-04-19 · via 博客园 - ®Geovin Du Dream Park™

项目结构:

image

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

// 珠宝鉴定证书模型
type Certificate struct {
	CertNo   string // 唯一证书编号
	Jewelry  string // 珠宝名称
	Material string // 材质
	Weight   string // 重量
}


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

// 珠宝库存
type Inventory struct {
	SKU   string // 唯一SKU
	Name  string // 名称
	Stock int    // 库存数量
}


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

// 积分记录
type PointsRecord struct {
	UserID int
	Amount float64
	Points int
}
/*
# 版权所有  2026 ©涂聚文有限公司™ ®
# 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎
# 描述:Singleton 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/19 14:57
# User      :  geovindu
# Product   : GoLand
# Project   : godesginpattern
# File      : singleton.go
*/
package service

import "sync"

// Singleton 全局单例工厂
// 持有所有全局唯一的业务服务
type Singleton struct {
	CertService      CertificateService
	InventoryService InventoryService
	PointsService    PointsService
}

// 私有单例实例
var singleton *Singleton
var once sync.Once

// NewSingleton 初始化全局单例工厂(只执行一次)
func NewSingleton() *Singleton {
	once.Do(func() {
		// 初始化所有单例服务
		singleton = &Singleton{
			CertService:      NewCertificateServiceImpl(),
			InventoryService: NewInventoryServiceImpl(),
			PointsService:    NewPointsServiceImpl(),
		}
	})
	return singleton
}



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

import (
	"godesginpattern/singleton/model"
	"strconv"
	"sync"
)

// CertificateService 证书服务接口(职责单一:生成唯一证书)
type CertificateService interface {
	Generate(jewelry, material, weight string) *model.Certificate
}

// CertificateServiceImpl 实现类(单例)
type CertificateServiceImpl struct {
	lastNo int
	mu     sync.Mutex
}

func NewCertificateServiceImpl() *CertificateServiceImpl {
	return &CertificateServiceImpl{lastNo: 10000}
}

// Generate 生成唯一证书(线程安全)
func (c *CertificateServiceImpl) Generate(jewelry, material, weight string) *model.Certificate {
	c.mu.Lock()
	defer c.mu.Unlock()

	c.lastNo++
	certNo := "ZB-" + strconv.Itoa(c.lastNo)

	return &model.Certificate{
		CertNo:   certNo,
		Jewelry:  jewelry,
		Material: material,
		Weight:   weight,
	}
}
/*
# 版权所有  2026 ©涂聚文有限公司™ ®
# 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎
# 描述:Singleton 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/19 15:00
# User      :  geovindu
# Product   : GoLand
# Project   : godesginpattern
# File      : jewelry_api.go
*/
package api

import (
	"fmt"
	"godesginpattern/singleton/model"
	"godesginpattern/singleton/service"
)

// UseSingleton 使用全局单例(修复格式化输出)
func UseSingleton() {
	// 全局唯一入口
	s := service.NewSingleton()

	// 1. 生成证书(整洁输出)
	fmt.Println("=== 珠宝鉴定证书生成 ===")
	cert := s.CertService.Generate("钻石戒指", "18K金+天然钻石", "1.2ct")
	printCertificate(cert)

	// 2. 操作库存
	fmt.Println("\n=== 珠宝库存管理 ===")
	s.InventoryService.AddStock("DIAMOND-RING-001", "钻石戒指", 5)
	stock := s.InventoryService.GetStock("DIAMOND-RING-001")
	fmt.Printf("SKU: %s | 当前库存:%d\n", "DIAMOND-RING-001", stock)

	// 3. 积分结算
	fmt.Println("\n=== 会员积分结算 ===")
	points := s.PointsService.Calculate(1001, 5999)
	printPointsRecord(points)
}

// printCertificate 证书格式化输出
func printCertificate(c *model.Certificate) {
	fmt.Printf("证书编号:%s\n", c.CertNo)
	fmt.Printf("珠宝名称:%s\n", c.Jewelry)
	fmt.Printf("材质:%s\n", c.Material)
	fmt.Printf("重量:%s\n", c.Weight)
}

// printPointsRecord 积分记录格式化输出
func printPointsRecord(p *model.PointsRecord) {
	fmt.Printf("用户ID:%d\n", p.UserID)
	fmt.Printf("消费金额:%.2f 元\n", p.Amount)
	fmt.Printf("获得积分:%d\n", p.Points)
}

调用:

/*
# 版权所有  2026 ©涂聚文有限公司™ ®
# 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎
# 描述:
# 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/19 15:22
# User      :  geovindu
# Product   : GoLand
# Project   : godesginpattern
# File      : singletonbll.go
核心设计原则
所有单例统一管理:一个 Singleton 工厂持有所有全局唯一服务
接口化编程:Service 全部定义接口,方便扩展、替换、测试
严格分层:
API:处理请求
Service:业务逻辑(单例)
Repository:数据读写
Model:数据结构
线程安全:使用 sync.Once 初始化 + 内部锁保护共享数据
禁止直接 new:外部只能通过工厂获取单例,保证全局唯一

singleton/
├── cmd/                    # 程序入口
├── internal/               # 内部业务(禁止外部引用)
│   ├── model/              # 数据模型
│   ├── repository/         # 数据存储层(DB/缓存)
│   ├── service/            # 业务逻辑层(单例核心)
│   │   ├── cert.go         # 证书编号生成服务(单例)
│   │   ├── inventory.go    # 库存管理服务(单例)
│   │   ├── points.go        # 积分结算服务(单例)
│   │   └── singleton.go    # 全局单例工厂(统一管理)
│   └── api/                # HTTP API 层
├── pkg/                    # 公共工具
└── go.mod
*/
package bll

import "godesginpattern/singleton/api"

func SingletonMain() {
	// 全局唯一单例系统启动
	api.UseSingleton()
}

输出:

image

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