项目结构:

Go
/*
# 版权所有 2026 ©涂聚文有限公司™ ®
# 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎
# 描述:Simple Factory 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/13 21:52
# User : geovindu
# Product : GoLand
# Project : sudydemo
# File : jewelry.go
*/
package simplefactory
// Jewelry 珠宝接口,所有珠宝产品都要实现该接口
type Jewelry interface {
ShowInfo() // 展示珠宝信息
MaterialCheck() // 材质检测(业务流程)
CustomEngrave(string) // 定制刻字(业务流程)
}
// 珠宝类型常量,工厂用来判断生产哪种珠宝
const (
JewelryTypeRing = "ring" // 钻戒
JewelryTypeNecklace = "necklace" // 项链
JewelryTypeBracelet = "bracelet" // 手镯
)
/*
# 版权所有 2026 ©涂聚文有限公司™ ®
# 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎
# 描述:Simple Factory 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/13 21:53
# User : geovindu
# Product : GoLand
# Project : sudydemo
# File : ring.go
*/
package simplefactory
import "fmt"
// DiamondRing 钻戒(具体产品类)
type DiamondRing struct {
Material string // 材质:铂金/18K金
Carat string // 钻石克拉
Engrave string // 刻字内容
}
// ShowInfo 展示钻戒信息
func (r *DiamondRing) ShowInfo() {
fmt.Printf("【钻戒】材质:%s | 钻石克拉:%s | 刻字:%s\n", r.Material, r.Carat, r.Engrave)
}
// MaterialCheck 钻戒材质检测
func (r *DiamondRing) MaterialCheck() {
fmt.Printf("✅ 钻戒材质检测完成:%s 材质合格,钻石无瑕疵\n", r.Material)
}
// CustomEngrave 钻戒定制刻字
func (r *DiamondRing) CustomEngrave(text string) {
r.Engrave = text
fmt.Printf("✍️ 钻戒刻字成功:%s\n", text)
}
/*
# 版权所有 2026 ©涂聚文有限公司™ ®
# 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎
# 描述:Simple Factory 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/13 21:53
# User : geovindu
# Product : GoLand
# Project : sudydemo
# File : necklace.go
*/
package simplefactory
import "fmt"
// Necklace 项链(具体产品类)
type Necklace struct {
Material string // 材质:黄金/白金
Length string // 项链长度
Engrave string // 刻字内容
}
// ShowInfo 展示项链信息
func (n *Necklace) ShowInfo() {
fmt.Printf("【项链】材质:%s | 长度:%s | 刻字:%s\n", n.Material, n.Length, n.Engrave)
}
// MaterialCheck 项链材质检测
func (n *Necklace) MaterialCheck() {
fmt.Printf("✅ 项链材质检测完成:%s 材质纯度达标\n", n.Material)
}
// CustomEngrave 项链定制刻字
func (n *Necklace) CustomEngrave(text string) {
n.Engrave = text
fmt.Printf("✍️ 项链刻字成功:%s\n", text)
}
/*
# 版权所有 2026 ©涂聚文有限公司™ ®
# 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎
# 描述:Simple Factory 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/13 21:54
# User : geovindu
# Product : GoLand
# Project : sudydemo
# File : bracelet.go
*/
package simplefactory
import "fmt"
// Bracelet 手镯(具体产品类)
type Bracelet struct {
Material string // 材质:银/翡翠
Style string // 款式:素圈/雕花
Engrave string // 刻字内容
}
// ShowInfo 展示手镯信息
func (b *Bracelet) ShowInfo() {
fmt.Printf("【手镯】材质:%s | 款式:%s | 刻字:%s\n", b.Material, b.Style, b.Engrave)
}
// MaterialCheck 手镯材质检测
func (b *Bracelet) MaterialCheck() {
fmt.Printf("✅ 手镯材质检测完成:%s 材质无裂纹\n", b.Material)
}
// CustomEngrave 手镯定制刻字
func (b *Bracelet) CustomEngrave(text string) {
b.Engrave = text
fmt.Printf("✍️ 手镯刻字成功:%s\n", text)
}
/*
# 版权所有 2026 ©涂聚文有限公司™ ®
# 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎
# 描述:Simple Factory 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/13 21:54
# User : geovindu
# Product : GoLand
# Project : sudydemo
# File : factory.go
*/
package simplefactory
import "errors"
// JewelryFactory 珠宝加工厂(简单工厂类)
type JewelryFactory struct{}
// CreateJewelry 生产珠宝:传入珠宝类型,返回对应的珠宝产品
func (f *JewelryFactory) CreateJewelry(jewelryType string) (Jewelry, error) {
switch jewelryType {
case JewelryTypeRing:
// 生产钻戒:默认配置
return &DiamondRing{
Material: "18K白金",
Carat: "1克拉",
}, nil
case JewelryTypeNecklace:
// 生产项链:默认配置
return &Necklace{
Material: "足金",
Length: "45cm",
}, nil
case JewelryTypeBracelet:
// 生产手镯:默认配置
return &Bracelet{
Material: "S999纯银",
Style: "素圈",
}, nil
default:
return nil, errors.New("不支持生产该类型珠宝")
}
}
调用
Go
/*
# 版权所有 2026 ©涂聚文有限公司™ ®
# 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎
# 描述: Simple Factory 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/13 21:55
# User : geovindu
# Product : GoLand
# Project : sudydemo
# File : simplefactorybll.go
*/
package bll
import (
"sudydemo/simplefactory"
)
// 显示示例
func SimpleFactoryMain() {
// 1. 初始化珠宝加工厂(工厂实例)
factory := &simplefactory.JewelryFactory{}
println("========== 珠宝店下单流程 ==========\n")
// ==================== 订单1:生产钻戒 ====================
ring, err := factory.CreateJewelry(simplefactory.JewelryTypeRing)
if err != nil {
panic(err)
}
ring.MaterialCheck() // 材质检测
ring.CustomEngrave("永浴爱河") // 定制刻字
ring.ShowInfo() // 展示成品
println()
// ==================== 订单2:生产项链 ====================
necklace, err := factory.CreateJewelry(simplefactory.JewelryTypeNecklace)
if err != nil {
panic(err)
}
necklace.MaterialCheck()
necklace.CustomEngrave("平安喜乐")
necklace.ShowInfo()
println()
// ==================== 订单3:生产手镯 ====================
bracelet, err := factory.CreateJewelry(simplefactory.JewelryTypeBracelet)
if err != nil {
panic(err)
}
bracelet.MaterialCheck()
bracelet.CustomEngrave("健康顺遂")
bracelet.ShowInfo()
}
输出:
