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

推荐订阅源

cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
WordPress大学
WordPress大学
宝玉的分享
宝玉的分享
人人都是产品经理
人人都是产品经理
博客园 - 聂微东
IT之家
IT之家
V
V2EX
Jina AI
Jina AI
V
Visual Studio Blog
有赞技术团队
有赞技术团队
博客园 - 司徒正美
博客园 - 叶小钗
The Cloudflare Blog
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
小众软件
小众软件
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
博客园 - 三生石上(FineUI控件)
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Google DeepMind News
Google DeepMind News
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
腾讯CDC
Google Online Security Blog
Google Online Security Blog
博客园 - 【当耐特】
Apple Machine Learning Research
Apple Machine Learning Research
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
N
News and Events Feed by Topic
N
News and Events Feed by Topic
The Last Watchdog
The Last Watchdog
W
WeLiveSecurity
月光博客
月光博客
Security Archives - TechRepublic
Security Archives - TechRepublic
Webroot Blog
Webroot Blog
SecWiki News
SecWiki News
博客园_首页
罗磊的独立博客
量子位
Latest news
Latest news
I
Intezer
V
Vulnerabilities – Threatpost
A
Arctic Wolf
Last Week in AI
Last Week in AI
Recent Commits to openclaw:main
Recent Commits to openclaw:main
S
SegmentFault 最新的问题
S
Security Affairs
阮一峰的网络日志
阮一峰的网络日志
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
酷 壳 – CoolShell
酷 壳 – CoolShell
P
Palo Alto Networks Blog
C
CXSECURITY Database RSS Feed - CXSecurity.com
N
News | PayPal Newsroom

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

项目结构:

image

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

// 维修类型常量(严格定义业务等级)
const (
	RepairTypeSimple  = "简单维修" // 初级技师
	RepairTypeComplex = "复杂维修" // 高级技师
	RepairTypeMajor   = "重大维修" // 维修主管
)

// RepairRequest 维修请求实体(企业级标准:字段完整、不可变)
type RepairRequest struct {
	CustomerName string // 客户姓名
	RepairType   string // 维修类型
	Content      string // 维修详情
}
/*
# 版权所有  2026 ©涂聚文有限公司™ ®
# 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎
# 描述:Chain of Responsibility 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/21 20:48
# User      :  geovindu
# Product   : GoLand
# Project   : godesginpattern
# File      : base.go
*/
package handler

import "godesginpattern/chain/domain"

// RepairHandler 责任链核心接口(企业级标准:契约定义)
type RepairHandler interface {
	SetNext(handler RepairHandler) RepairHandler
	HandleRequest(req *domain.RepairRequest) bool
}

// BaseRepairHandler 基础处理者(封装Next指针,所有处理者继承)
type BaseRepairHandler struct {
	next RepairHandler
}

// SetNext 链式设置下一级处理者
func (b *BaseRepairHandler) SetNext(handler RepairHandler) RepairHandler {
	b.next = handler
	return handler
}

// nextHandle 公共方法:传递给下一级处理
func (b *BaseRepairHandler) nextHandle(req *domain.RepairRequest) bool {
	if b.next != nil {
		return b.next.HandleRequest(req)
	}
	return false
}



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

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

// JuniorTechnician 初级珠宝技师:仅处理简单维修
type JuniorTechnician struct {
	BaseRepairHandler
}

func (j *JuniorTechnician) HandleRequest(req *domain.RepairRequest) bool {
	if req.RepairType == domain.RepairTypeSimple {
		fmt.Printf("【初级技师】处理客户%s的请求:%s(维修内容:%s)✅\n",
			req.CustomerName, req.RepairType, req.Content)
		return true
	}
	// 无法处理,交给下一级
	return j.nextHandle(req)
}


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

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

// SeniorTechnician 高级珠宝技师:仅处理复杂维修
type SeniorTechnician struct {
	BaseRepairHandler
}

func (s *SeniorTechnician) HandleRequest(req *domain.RepairRequest) bool {
	if req.RepairType == domain.RepairTypeComplex {
		fmt.Printf("【高级技师】处理客户%s的请求:%s(维修内容:%s)✅\n",
			req.CustomerName, req.RepairType, req.Content)
		return true
	}
	return s.nextHandle(req)
}


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

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

// RepairSupervisor 维修主管:仅处理重大维修
type RepairSupervisor struct {
	BaseRepairHandler
}

func (r *RepairSupervisor) HandleRequest(req *domain.RepairRequest) bool {
	if req.RepairType == domain.RepairTypeMajor {
		fmt.Printf("【维修主管】处理客户%s的请求:%s(维修内容:%s)✅\n",
			req.CustomerName, req.RepairType, req.Content)
		return true
	}
	return r.nextHandle(req)
}
/*
# 版权所有  2026 ©涂聚文有限公司™ ®
# 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎
# 描述:Chain of Responsibility 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/21 20:49
# User      :  geovindu
# Product   : GoLand
# Project   : godesginpattern
# File      : repair_service.go
*/
package service

import (
	"fmt"
	"godesginpattern/chain/domain"
	"godesginpattern/chain/handler"
)

// RepairService 维修服务(企业级:对外唯一入口)
type RepairService struct {
	chainHandler handler.RepairHandler // 责任链入口
}

// NewRepairService 创建服务(初始化责任链)
func NewRepairService() *RepairService {
	// 1. 创建处理者
	junior := &handler.JuniorTechnician{}
	senior := &handler.SeniorTechnician{}
	supervisor := &handler.RepairSupervisor{}

	// 2. 构建标准责任链:初级 → 高级 → 主管
	junior.SetNext(senior).SetNext(supervisor)

	return &RepairService{
		chainHandler: junior,
	}
}

// SubmitRepair 提交维修请求(对外服务方法)
func (s *RepairService) SubmitRepair(req *domain.RepairRequest) {
	fmt.Println("===== 客户提交维修请求 =====")
	success := s.chainHandler.HandleRequest(req)
	if !success {
		fmt.Printf("❌ 无法处理客户%s的请求:%s(维修内容:%s)\n",
			req.CustomerName, req.RepairType, req.Content)
	}
	fmt.Println()
} 

调用:

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

Chain/
├── domain/          # 领域实体层(核心数据模型)
│   └── repair.go    # 维修请求实体、常量定义
├── handler/         # 责任链处理层(接口+实现)
│   ├── base.go      # 基础处理者(公共逻辑)
│   ├── junior.go    # 初级技师
│   ├── senior.go    # 高级技师
│   └── supervisor.go# 维修主管
├── service/         # 业务服务层(责任链构建+调度)
│   └── repair_service.go
├── go.mod           # Go 模块文件
└── main.go          # 程序入口(测试用例)
*/
package bll

import (
	"godesginpattern/chain/domain"
	"godesginpattern/chain/service"
)

func ChainMain() {
	// 初始化维修服务
	repairService := service.NewRepairService()

	// 测试1:简单维修
	req1 := &domain.RepairRequest{
		CustomerName: "张先生",
		RepairType:   domain.RepairTypeSimple,
		Content:      "戒指清洗+抛光",
	}
	repairService.SubmitRepair(req1)

	// 测试2:复杂维修
	req2 := &domain.RepairRequest{
		CustomerName: "李女士",
		RepairType:   domain.RepairTypeComplex,
		Content:      "项链宝石松动加固",
	}
	repairService.SubmitRepair(req2)

	// 测试3:重大维修
	req3 := &domain.RepairRequest{
		CustomerName: "王先生",
		RepairType:   domain.RepairTypeMajor,
		Content:      "钻戒主石更换+戒托重构",
	}
	repairService.SubmitRepair(req3)

	// 测试4:无法处理的请求
	req4 := &domain.RepairRequest{
		CustomerName: "陈女士",
		RepairType:   "古董珠宝修复",
		Content:      "百年翡翠手镯断裂拼接",
	}
	repairService.SubmitRepair(req4)
}

输出:

15b35ef872e4eb190f5669d434ea5b1f

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