rust: Simple Factory Pattern

项目结构:

0eb3ecd5-92b4-4cbc-8364-cfc6f5547e75

 

//!# 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();
}

  

输出:

85a1d4ae-17ce-4703-8fc7-bb1d89f290fe

 

posted @ 2026-09-16 23:24  ®Geovin Du Dream Park™  阅读(4)  评论(0)    收藏  举报