rust: Simple Factory Pattern
项目结构:

//!# encoding: utf-8
//!# 版权所有 2026 ©涂聚文有限公司™ ®
//!# 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎
//!# 描述:Simple Factory Pattern 简单工厂模式 Creational Patterns 创建型模式
//!# Author : geovindu,Geovin Du 涂聚文.
//!# IDE : RustRover 2025.1.1 Rust
//!# os : windows 10
//!# database : mysql 9.0 sql server 2019, postgreSQL 17.0 Oracle 21c Neo4j
//!# Datetime : 2026/9/16 22:49
//!# User : geovindu
//!# Product : RustRover
//!# Project : rusttest
//!# File : mod.rs
pub mod material_verify;
pub mod design_draft;
pub mod manufacture;
pub mod quality_inspect;
pub mod pack;
pub mod logistics;
pub mod finance;
pub mod marketing;
pub mod business_order;
pub mod hr_admin;
pub mod it_ops;
pub mod training;
//!# encoding: utf-8
//!# 版权所有 2026 ©涂聚文有限公司™ ®
//!# 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎
//!# 描述:Simple Factory Pattern 简单工厂模式 Creational Patterns 创建型模式
//!# Author : geovindu,Geovin Du 涂聚文.
//!# IDE : RustRover 2025.1.1 Rust
//!# os : windows 10
//!# database : mysql 9.0 sql server 2019, postgreSQL 17.0 Oracle 21c Neo4j
//!# Datetime : 2026/9/16 22:53
//!# User : geovindu
//!# Product : RustRover
//!# Project : rusttest
//!# File : business_order.rs
use crate::module::JewelryBusinessModule;
pub struct BusinessOrderModule;
impl JewelryBusinessModule for BusinessOrderModule {
fn module_name(&self) -> &str { "业务订单" }
fn execute(&self, params: &str) -> Result<String, String> {
if params.is_empty() {
return Err("客户ID和金额不能为空".into());
}
let parts: Vec<&str> = params.split('|').collect();
if parts.len() != 2 {
return Err("参数格式应为 客户ID|金额".into());
}
Ok(format!(
"[业务订单] 客户 {} 创建黄金订单,金额 {} 元",
parts[0], parts[1]
))
}
}
//!# encoding: utf-8
//!# 版权所有 2026 ©涂聚文有限公司™ ®
//!# 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎
//!# 描述:Simple Factory Pattern 简单工厂模式 Creational Patterns 创建型模式
//!# Author : geovindu,Geovin Du 涂聚文.
//!# IDE : RustRover 2025.1.1 Rust
//!# os : windows 10
//!# database : mysql 9.0 sql server 2019, postgreSQL 17.0 Oracle 21c Neo4j
//!# Datetime : 2026/9/16 22:50
//!# User : geovindu
//!# Product : RustRover
//!# Project : rusttest
//!# File : design_draft.rs
use crate::module::JewelryBusinessModule;
pub struct DesignDraftModule;
impl JewelryBusinessModule for DesignDraftModule {
fn module_name(&self) -> &str { "设计制图" }
fn execute(&self, params: &str) -> Result<String, String> {
if params.is_empty() {
return Err("SKU编号不能为空".into());
}
Ok(format!(
"[设计制图] SKU {} 3D CAD模型渲染完成,符合工艺标准",
params
))
}
}
//!# encoding: utf-8
//!# 版权所有 2026 ©涂聚文有限公司™ ®
//!# 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎
//!# 描述:Simple Factory Pattern 简单工厂模式 Creational Patterns 创建型模式
//!# Author : geovindu,Geovin Du 涂聚文.
//!# IDE : RustRover 2025.1.1 Rust
//!# os : windows 10
//!# database : mysql 9.0 sql server 2019, postgreSQL 17.0 Oracle 21c Neo4j
//!# Datetime : 2026/9/16 22:51
//!# User : geovindu
//!# Product : RustRover
//!# Project : rusttest
//!# File : finance.rs
use crate::module::JewelryBusinessModule;
pub struct FinanceModule;
impl JewelryBusinessModule for FinanceModule {
fn module_name(&self) -> &str { "财务" }
fn execute(&self, params: &str) -> Result<String, String> {
if params.is_empty() {
return Err("订单号不能为空".into());
}
Ok(format!(
"[财务] 订单 {} 贵金属增值税票已生成",
params
))
}
}
//!# encoding: utf-8
//!# 版权所有 2026 ©涂聚文有限公司™ ®
//!# 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎
//!# 描述:Simple Factory Pattern 简单工厂模式 Creational Patterns 创建型模式
//!# Author : geovindu,Geovin Du 涂聚文.
//!# IDE : RustRover 2025.1.1 Rust
//!# os : windows 10
//!# database : mysql 9.0 sql server 2019, postgreSQL 17.0 Oracle 21c Neo4j
//!# Datetime : 2026/9/16 22:53
//!# User : geovindu
//!# Product : RustRover
//!# Project : rusttest
//!# File : hr_admin.rs
use crate::module::JewelryBusinessModule;
pub struct HrAdminModule;
impl JewelryBusinessModule for HrAdminModule {
fn module_name(&self) -> &str { "人事行政" }
fn execute(&self, params: &str) -> Result<String, String> {
if params.is_empty() {
return Err("部门名称不能为空".into());
}
Ok(format!(
"[人事行政] {} 排班已安排,考勤同步完成",
params
))
}
}
//!# encoding: utf-8
//!# 版权所有 2026 ©涂聚文有限公司™ ®
//!# 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎
//!# 描述:Simple Factory Pattern 简单工厂模式 Creational Patterns 创建型模式
//!# Author : geovindu,Geovin Du 涂聚文.
//!# IDE : RustRover 2025.1.1 Rust
//!# os : windows 10
//!# database : mysql 9.0 sql server 2019, postgreSQL 17.0 Oracle 21c Neo4j
//!# Datetime : 2026/9/16 22:54
//!# User : geovindu
//!# Product : RustRover
//!# Project : rusttest
//!# File : it_ops.rs
use crate::module::JewelryBusinessModule;
pub struct ItOpsModule;
impl JewelryBusinessModule for ItOpsModule {
fn module_name(&self) -> &str { "IT运维" }
fn execute(&self, _params: &str) -> Result<String, String> {
Ok("[IT运维] ERP/MES/WMS 系统健康检查通过,数据库连接正常".to_string())
}
}
//!# encoding: utf-8
//!# 版权所有 2026 ©涂聚文有限公司™ ®
//!# 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎
//!# 描述:Simple Factory Pattern 简单工厂模式 Creational Patterns 创建型模式
//!# Author : geovindu,Geovin Du 涂聚文.
//!# IDE : RustRover 2025.1.1 Rust
//!# os : windows 10
//!# database : mysql 9.0 sql server 2019, postgreSQL 17.0 Oracle 21c Neo4j
//!# Datetime : 2026/9/16 22:51
//!# User : geovindu
//!# Product : RustRover
//!# Project : rusttest
//!# File : logistics.rs
use crate::module::JewelryBusinessModule;
pub struct LogisticsModule;
impl JewelryBusinessModule for LogisticsModule {
fn module_name(&self) -> &str { "物流" }
fn execute(&self, params: &str) -> Result<String, String> {
if params.is_empty() {
return Err("订单号不能为空".into());
}
Ok(format!(
"[物流] 订单 {} 已创建保价贵重物品专线发货单",
params
))
}
}
//!# encoding: utf-8
//!# 版权所有 2026 ©涂聚文有限公司™ ®
//!# 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎
//!# 描述:Simple Factory Pattern 简单工厂模式 Creational Patterns 创建型模式
//!# Author : geovindu,Geovin Du 涂聚文.
//!# IDE : RustRover 2025.1.1 Rust
//!# os : windows 10
//!# database : mysql 9.0 sql server 2019, postgreSQL 17.0 Oracle 21c Neo4j
//!# Datetime : 2026/9/16 22:50
//!# User : geovindu
//!# Product : RustRover
//!# Project : rusttest
//!# File : manufacture.rs
use crate::module::JewelryBusinessModule;
pub struct ManufactureModule;
impl JewelryBusinessModule for ManufactureModule {
fn module_name(&self) -> &str { "加工生产" }
fn execute(&self, params: &str) -> Result<String, String> {
if params.is_empty() {
return Err("工单号不能为空".into());
}
let steps = vec!["起版", "倒模", "执模", "抛光", "电金"];
Ok(format!(
"[加工生产] 工单 {} 已开单,工序:{}",
params,
steps.join(" → ")
))
}
}
//!# encoding: utf-8
//!# 版权所有 2026 ©涂聚文有限公司™ ®
//!# 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎
//!# 描述:Simple Factory Pattern 简单工厂模式 Creational Patterns 创建型模式
//!# Author : geovindu,Geovin Du 涂聚文.
//!# IDE : RustRover 2025.1.1 Rust
//!# os : windows 10
//!# database : mysql 9.0 sql server 2019, postgreSQL 17.0 Oracle 21c Neo4j
//!# Datetime : 2026/9/16 22:53
//!# User : geovindu
//!# Product : RustRover
//!# Project : rusttest
//!# File : marketing.rs
use crate::module::JewelryBusinessModule;
pub struct MarketingModule;
impl JewelryBusinessModule for MarketingModule {
fn module_name(&self) -> &str { "营销推广" }
fn execute(&self, params: &str) -> Result<String, String> {
if params.is_empty() {
return Err("营销主题不能为空".into());
}
Ok(format!(
"[营销推广] 主题「{}」古法金海报、短视频物料已生成",
params
))
}
}
//!# encoding: utf-8
//!# 版权所有 2026 ©涂聚文有限公司™ ®
//!# 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎
//!# 描述:Simple Factory Pattern 简单工厂模式 Creational Patterns 创建型模式
//!# Author : geovindu,Geovin Du 涂聚文.
//!# IDE : RustRover 2025.1.1 Rust
//!# os : windows 10
//!# database : mysql 9.0 sql server 2019, postgreSQL 17.0 Oracle 21c Neo4j
//!# Datetime : 2026/9/16 22:50
//!# User : geovindu
//!# Product : RustRover
//!# Project : rusttest
//!# File : material_verify.rs
use crate::module::JewelryBusinessModule;
pub struct MaterialVerifyModule;
impl JewelryBusinessModule for MaterialVerifyModule {
fn module_name(&self) -> &str { "原料采购核验" }
fn execute(&self, params: &str) -> Result<String, String> {
if params.is_empty() {
return Err("批次号不能为空".into());
}
Ok(format!(
"[原料采购核验] 批次 {} 金含量检测合格,准予入库",
params
))
}
}
//!# encoding: utf-8
//!# 版权所有 2026 ©涂聚文有限公司™ ®
//!# 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎
//!# 描述:Simple Factory Pattern 简单工厂模式 Creational Patterns 创建型模式
//!# Author : geovindu,Geovin Du 涂聚文.
//!# IDE : RustRover 2025.1.1 Rust
//!# os : windows 10
//!# database : mysql 9.0 sql server 2019, postgreSQL 17.0 Oracle 21c Neo4j
//!# Datetime : 2026/9/16 22:51
//!# User : geovindu
//!# Product : RustRover
//!# Project : rusttest
//!# File : pack.rs
use crate::module::JewelryBusinessModule;
pub struct PackModule;
impl JewelryBusinessModule for PackModule {
fn module_name(&self) -> &str { "包装" }
fn execute(&self, params: &str) -> Result<String, String> {
if params.is_empty() {
return Err("SKU编号不能为空".into());
}
Ok(format!("[包装] SKU {} 首饰盒+证书密封包装完成", params))
}
}
//!# encoding: utf-8
//!# 版权所有 2026 ©涂聚文有限公司™ ®
//!# 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎
//!# 描述:Simple Factory Pattern 简单工厂模式 Creational Patterns 创建型模式
//!# Author : geovindu,Geovin Du 涂聚文.
//!# IDE : RustRover 2025.1.1 Rust
//!# os : windows 10
//!# database : mysql 9.0 sql server 2019, postgreSQL 17.0 Oracle 21c Neo4j
//!# Datetime : 2026/9/16 22:50
//!# User : geovindu
//!# Product : RustRover
//!# Project : rusttest
//!# File : quality_inspect.rs
use crate::module::JewelryBusinessModule;
pub struct QualityInspectModule;
impl JewelryBusinessModule for QualityInspectModule {
fn module_name(&self) -> &str { "质检" }
fn execute(&self, params: &str) -> Result<String, String> {
if params.is_empty() {
return Err("工单号不能为空".into());
}
Ok(format!(
"[质检] 工单 {} 重量/外观/印记核验通过,符合 GB 11887 贵金属首饰国标",
params
))
}
}
//!# encoding: utf-8
//!# 版权所有 2026 ©涂聚文有限公司™ ®
//!# 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎
//!# 描述:Simple Factory Pattern 简单工厂模式 Creational Patterns 创建型模式
//!# Author : geovindu,Geovin Du 涂聚文.
//!# IDE : RustRover 2025.1.1 Rust
//!# os : windows 10
//!# database : mysql 9.0 sql server 2019, postgreSQL 17.0 Oracle 21c Neo4j
//!# Datetime : 2026/9/16 22:55
//!# User : geovindu
//!# Product : RustRover
//!# Project : rusttest
//!# File : training.rs
use crate::module::JewelryBusinessModule;
pub struct TrainingModule;
impl JewelryBusinessModule for TrainingModule {
fn module_name(&self) -> &str { "培训" }
fn execute(&self, params: &str) -> Result<String, String> {
if params.is_empty() {
return Err("课程主题不能为空".into());
}
Ok(format!(
"[培训] 课程「{}」课件已下发,新员工必修",
params
))
}
}
//!# encoding: utf-8
//!# 版权所有 2026 ©涂聚文有限公司™ ®
//!# 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎
//!# 描述:Simple Factory Pattern 简单工厂模式 Creational Patterns 创建型模式
//!# Author : geovindu,Geovin Du 涂聚文.
//!# IDE : RustRover 2025.1.1 Rust
//!# os : windows 10
//!# database : mysql 9.0 sql server 2019, postgreSQL 17.0 Oracle 21c Neo4j
//!# Datetime : 2026/9/16 22:48
//!# User : geovindu
//!# Product : RustRover
//!# Project : rusttest
//!# File : lib.rs
pub mod module;
pub mod modules;
pub mod factory;
//!# encoding: utf-8
//!# 版权所有 2026 ©涂聚文有限公司™ ®
//!# 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎
//!# 描述:Simple Factory Pattern 简单工厂模式 Creational Patterns 创建型模式
//!# Author : geovindu,Geovin Du 涂聚文.
//!# IDE : RustRover 2025.1.1 Rust
//!# os : windows 10
//!# database : mysql 9.0 sql server 2019, postgreSQL 17.0 Oracle 21c Neo4j
//!# Datetime : 2026/9/16 22:49
//!# User : geovindu
//!# Product : RustRover
//!# Project : rusttest
//!# File : module.rs
/// 珠宝企业统一业务模块接口
pub trait JewelryBusinessModule {
/// 模块名称
fn module_name(&self) -> &str;
/// 执行业务逻辑
fn execute(&self, params: &str) -> Result<String, String>;
}
//!# encoding: utf-8
//!# 版权所有 2026 ©涂聚文有限公司™ ®
//!# 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎
//!# 描述:Simple Factory Pattern 简单工厂模式 Creational Patterns 创建型模式
//!# Author : geovindu,Geovin Du 涂聚文.
//!# IDE : RustRover 2025.1.1 Rust
//!# os : windows 10
//!# database : mysql 9.0 sql server 2019, postgreSQL 17.0 Oracle 21c Neo4j
//!# Datetime : 2026/9/16 22:55
//!# User : geovindu
//!# Product : RustRover
//!# Project : rusttest
//!# File : factory.rs
use crate::module::JewelryBusinessModule;
use crate::modules::*;
/// 珠宝企业简单工厂:根据模块名称创建对应的业务处理对象
pub struct JewelryBusinessFactory;
impl JewelryBusinessFactory {
pub fn new() -> Self {
Self
}
/// 根据模块名称创建对应的业务模块对象
pub fn create_module(
&self,
module_type: &str,
) -> Result<Box<dyn JewelryBusinessModule>, String> {
let module: Box<dyn JewelryBusinessModule> = match module_type {
"material_verify" => Box::new(material_verify::MaterialVerifyModule),
"design_draft" => Box::new(design_draft::DesignDraftModule),
"manufacture" => Box::new(manufacture::ManufactureModule),
"quality_inspect" => Box::new(quality_inspect::QualityInspectModule),
"pack" => Box::new(pack::PackModule),
"logistics" => Box::new(logistics::LogisticsModule),
"finance" => Box::new(finance::FinanceModule),
"marketing" => Box::new(marketing::MarketingModule),
"business_order" => Box::new(business_order::BusinessOrderModule),
"hr_admin" => Box::new(hr_admin::HrAdminModule),
"it_ops" => Box::new(it_ops::ItOpsModule),
"training" => Box::new(training::TrainingModule),
_ => return Err(format!("未知的业务模块类型: {}", module_type)),
};
Ok(module)
}
/// 批量执行全流程(演示用)
pub fn run_full_pipeline(&self) {
let modules: Vec<(&str, &str)> = vec![
("material_verify", "BATCH-20260916-001"),
("design_draft", "SKU-GOLD-RING-001"),
("manufacture", "WO-20260916-088"),
("quality_inspect", "WO-20260916-088"),
("pack", "SKU-GOLD-RING-001"),
("logistics", "ORD-20260916-6688"),
("finance", "ORD-20260916-6688"),
("marketing", "古法金秋季大促"),
("business_order", "CUST-10086|29800.00"),
("hr_admin", "生产部"),
("it_ops", ""),
("training", "贵金属鉴别"),
];
println!("\n══════════════════════════════════════════════");
println!(" 珠宝企业全流程业务执行(简单工厂模式)");
println!("══════════════════════════════════════════════");
for (module_type, params) in modules {
match self.create_module(module_type) {
Ok(module) => match module.execute(params) {
Ok(msg) => println!("✅ {}:{}", module.module_name(), msg),
Err(e) => println!("❌ {}:{}", module.module_name(), e),
},
Err(e) => println!("❌ 创建模块失败:{}", e),
}
}
println!("══════════════════════════════════════════════\n");
}
}
调用:
//! # encoding: utf-8
//! # 版权所有 2026 ©涂聚文有限公司™ ®
//! # 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎 在企业级高并发系统中,引入“重试机制”和“死信队列(Dead Letter Queue)”是保障系统高可用性的关键防线。
//! # 描述:desgin pattern Simple Factory Pattern 简单工厂模式 Creational Patterns 创建型模式
//! # Author : geovindu,Geovin Du 涂聚文. rustup update cargo --version
//! # IDE : RustRover 2025.1.1
//! # os : windows 10
//! # database : mysql 9.0 sql server 2019, postgreSQL 17.0 Oracle 21c Neo4j
//! # Datetime : 2026/9/12 12:51
//! # User : geovindu
//! # Product : RustRover
//! # Project : desginpattern
//! # File : main.rs
//!
//!
//! use std::fmt;
//!
use jewelry_factory::factory::JewelryBusinessFactory;
fn main() {
let factory = JewelryBusinessFactory::new();
// 方式一:单个模块调用
println!("--- 单个模块调用 ---");
let material = factory.create_module("material_verify").unwrap();
println!("{}", material.execute("BATCH-20260916-001").unwrap());
// 方式二:全流程批量执行
factory.run_full_pipeline();
}
输出:

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