CSharp: Abstract Factory Pattern using .net 10
项目结构:


/*
# encoding: utf-8
# 版权所有 2026 ©涂聚文有限公司™ ®
# 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎
# 描述:设计模式 Design Patterns Abstract Factory Pattern 抽象工厂模式
# Author : geovindu,Geovin Du 涂聚文.
# IDE : vs2026 c# .net 10
# os : windows 10
# database : mysql 9.0 sql server 2019, postgreSQL 17.0 Oracle 21c Neo4j
# Datetime : 2026-07-07 6:50
# User : geovindu
# Product : Visual Studio 2026
# Project : CSharpDesignPatterns
# File : FileLoggerOptions.cs
AbstractFactoryPattern/
├─ Abstractions/
│ ├─ Logging/
│ │ ├─ FileLoggerOptions.cs
│ ├─ Models/
│ │ └─ StructLogRecord.cs
│ └─ Process/
│ ├─ IJewelryProcess.cs
│ └─ IJewelryProcessFactory.cs
├─ Infrastructure/
│ └─ Logging/
│ ├─ ConcurrentFileLogger.cs
│ ├─ ConcurrentFileLoggerProvider.cs
│ └─ LoggerExtensions.cs
├─ Domain/
│ ├─ MaterialPurchase/ 原料采购 📦
│ ├─ Design/ 设计 🎨
│ ├─ Production/ 生产 🔥
│ ├─ QualityInspect/ 质检 🔍
│ ├─ Package/ 包装 🎁
│ ├─ Logistics/ 物流 🚚
│ ├─ Finance/ 财务 💰
│ ├─ Marketing/ 营销 📣
│ ├─ BusinessSale/ 业务 🤝
│ ├─ HumanResourceAdmin/ 人事行政 👥
│ ├─ InformationTech/ IT 💻
│ └─ Training/ ✅ 培训部门 📚
├─ Application/
│ └─ JewelryProcessScheduler.cs
*/
using System;
using System.Collections.Generic;
using System.Text;
namespace AbstractFactoryPattern.Abstractions.Logging
{
/// <summary>
///
/// </summary>
public sealed class FileLoggerOptions
{
public string LogRootDirectory { get; set; } = string.Empty;
public string LogFileNameTemplate { get; set; } = "app-{0}.log";
public bool EnableStructuredJsonLog { get; set; } = true;
public bool AutoFlushWriter { get; set; } = true;
}
}
/*
# encoding: utf-8
# 版权所有 2026 ©涂聚文有限公司™ ®
# 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎
# 描述:设计模式 Design Patterns Abstract Factory Pattern 抽象工厂模式
# Author : geovindu,Geovin Du 涂聚文.
# IDE : vs2026 c# .net 10
# os : windows 10
# database : mysql 9.0 sql server 2019, postgreSQL 17.0 Oracle 21c Neo4j
# Datetime : 2026-07-07 6:50
# User : geovindu
# Product : Visual Studio 2026
# Project : CSharpDesignPatterns
# File : StructLogRecord.cs
*/
using System;
using System.Collections.Generic;
using System.Text;
namespace AbstractFactoryPattern.Abstractions.Models
{
using Microsoft.Extensions.Logging;
using System;
using System.Collections.Generic;
/// <summary>
///
/// </summary>
public sealed class StructLogRecord
{
public DateTime Timestamp { get; set; }
public LogLevel Level { get; set; }
public string Category { get; set; } = string.Empty;
public string Message { get; set; } = string.Empty;
public string? Exception { get; set; }
public Dictionary<string, object?> ExtData { get; set; } = new();
public int ThreadId { get; set; }
}
}
/*
# encoding: utf-8
# 版权所有 2026 ©涂聚文有限公司™ ®
# 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎
# 描述:设计模式 Design Patterns Abstract Factory Pattern 抽象工厂模式
# Author : geovindu,Geovin Du 涂聚文.
# IDE : vs2026 c# .net 10
# os : windows 10
# database : mysql 9.0 sql server 2019, postgreSQL 17.0 Oracle 21c Neo4j
# Datetime : 2026-07-07 6:50
# User : geovindu
# Product : Visual Studio 2026
# Project : CSharpDesignPatterns
# File : IJewelryProcess.cs
*/
using System;
using System.Collections.Generic;
using System.Text;
namespace AbstractFactoryPattern.Abstractions.Process
{
/// <summary>
/// 契约层(所有接口、实体模型)
/// </summary>
public interface IJewelryProcess
{
void ExecuteBusinessProcess();
}
}
/*
# encoding: utf-8
# 版权所有 2026 ©涂聚文有限公司™ ®
# 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎
# 描述:设计模式 Design Patterns Abstract Factory Pattern 抽象工厂模式
# Author : geovindu,Geovin Du 涂聚文.
# IDE : vs2026 c# .net 10
# os : windows 10
# database : mysql 9.0 sql server 2019, postgreSQL 17.0 Oracle 21c Neo4j
# Datetime : 2026-07-07 6:50
# User : geovindu
# Product : Visual Studio 2026
# Project : CSharpDesignPatterns
# File : IJewelryProcessFactory.cs
*/
using System;
using System.Collections.Generic;
using System.Text;
namespace AbstractFactoryPattern.Abstractions.Process
{
/// <summary>
/// 契约层(所有接口、实体模型)
/// </summary>
public interface IJewelryProcessFactory
{
IJewelryProcess CreateProcessInstance();
}
}
/*
# encoding: utf-8
# 版权所有 2026 ©涂聚文有限公司™ ®
# 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎
# 描述:设计模式 Design Patterns Abstract Factory Pattern 抽象工厂模式
# Author : geovindu,Geovin Du 涂聚文.
# IDE : vs2026 c# .net 10
# os : windows 10
# database : mysql 9.0 sql server 2019, postgreSQL 17.0 Oracle 21c Neo4j
# Datetime : 2026-07-07 6:50
# User : geovindu
# Product : Visual Studio 2026
# Project : CSharpDesignPatterns
# File : JewelryProcessScheduler.cs
*/
using AbstractFactoryPattern.Abstractions.Process;
using Microsoft.Extensions.Logging;
using System;
using System.Collections.Generic;
using System.Text;
namespace AbstractFactoryPattern.Application
{
/// <summary>
/// 应用调度层(流程调度器、业务编排)
/// </summary>
public sealed class JewelryProcessScheduler
{
private readonly IEnumerable<IJewelryProcessFactory> _factories;
private readonly ILogger<JewelryProcessScheduler> _logger;
public JewelryProcessScheduler(IEnumerable<IJewelryProcessFactory> factories, ILogger<JewelryProcessScheduler> logger)
=> (_factories, _logger) = (factories, logger);
public void RunAllSerial()
{
_logger.LogInformation("🚀==================== 珠宝全业务流程启动 ====================");
foreach (var f in _factories) Execute(f);
_logger.LogInformation("🎉==================== 所有业务流程执行完成 ====================");
}
public async Task RunAllConcurrentAsync()
{
_logger.LogInformation("⚡【高并发模式】多线程执行业务流程");
var tasks = new List<Task>();
foreach (var f in _factories) tasks.Add(Task.Run(() => Execute(f)));
await Task.WhenAll(tasks);
_logger.LogInformation("✅【并发完成】所有部门流程执行完毕");
}
private void Execute(IJewelryProcessFactory factory)
{
try
{
var proc = factory.CreateProcessInstance();
proc.ExecuteBusinessProcess();
}
catch (Exception ex)
{
_logger.LogError(ex, "❌【执行失败】{Factory}", factory.GetType().Name);
}
}
}
}
/*
# encoding: utf-8
# 版权所有 2026 ©涂聚文有限公司™ ®
# 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎
# 描述:设计模式 Design Patterns Abstract Factory Pattern 抽象工厂模式
# Author : geovindu,Geovin Du 涂聚文.
# IDE : vs2026 c# .net 10
# os : windows 10
# database : mysql 9.0 sql server 2019, postgreSQL 17.0 Oracle 21c Neo4j
# Datetime : 2026-07-07 6:50
# User : geovindu
# Product : Visual Studio 2026
# Project : CSharpDesignPatterns
# File : ConcurrentFileLogger.cs
*/
using AbstractFactoryPattern.Abstractions.Models;
using AbstractFactoryPattern.Abstractions.Logging;
using Microsoft.Extensions.Logging;
using System;
using System.Collections.Concurrent;
using System.Collections.Generic;
using System.Text;
using System.Text.Json;
namespace AbstractFactoryPattern.Infrastructure.Logging
{
/// <summary>
///
/// </summary>
internal sealed class ConcurrentFileLogger : ILogger
{
private readonly string _categoryName;
private readonly FileLoggerOptions _options;
private readonly ConcurrentDictionary<string, StreamWriter> _writerPool;
private static readonly JsonSerializerOptions _jsonOpts = new() { WriteIndented = false };
public ConcurrentFileLogger(string categoryName, FileLoggerOptions options, ConcurrentDictionary<string, StreamWriter> writerPool)
{
_categoryName = categoryName;
_options = options;
_writerPool = writerPool;
}
public IDisposable? BeginScope<TState>(TState state) where TState : notnull => null;
public bool IsEnabled(LogLevel logLevel) => logLevel != LogLevel.None;
public void Log<TState>(LogLevel logLevel, EventId eventId, TState state, Exception? exception, Func<TState, Exception?, string> formatter)
{
if (!IsEnabled(logLevel)) return;
try
{
var msg = formatter(state, exception);
var now = DateTime.Now;
var tid = Environment.CurrentManagedThreadId;
var log = new StructLogRecord
{
Timestamp = now,
Level = logLevel,
Category = _categoryName,
Message = msg,
ThreadId = tid,
Exception = exception?.ToString()
};
var content = _options.EnableStructuredJsonLog
? JsonSerializer.Serialize(log, _jsonOpts)
: $"[{now:yyyy-MM-dd HH:mm:ss.fff}] [{logLevel}] 🧵{tid} | {_categoryName} | {msg}";
if (exception != null)
content += Environment.NewLine + exception;
WriteFile(logLevel, content);
}
catch { }
}
private void WriteFile(LogLevel level, string msg)
{
var date = DateTime.Now.ToString("yyyy-MM-dd");
var levelName = level.ToString().ToLowerInvariant();
var dir = Path.Combine(_options.LogRootDirectory, date);
if (!Directory.Exists(dir)) Directory.CreateDirectory(dir);
var path = Path.Combine(dir, string.Format(_options.LogFileNameTemplate, levelName));
var writer = _writerPool.GetOrAdd(path, p =>
new StreamWriter(new FileStream(p, FileMode.Append, FileAccess.Write, FileShare.ReadWrite, 4096), Encoding.UTF8)
{ AutoFlush = _options.AutoFlushWriter });
lock (writer) writer.WriteLine(msg);
}
}
}
/*
# encoding: utf-8
# 版权所有 2026 ©涂聚文有限公司™ ®
# 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎
# 描述:设计模式 Design Patterns Abstract Factory Pattern 抽象工厂模式
# Author : geovindu,Geovin Du 涂聚文.
# IDE : vs2026 c# .net 10
# os : windows 10
# database : mysql 9.0 sql server 2019, postgreSQL 17.0 Oracle 21c Neo4j
# Datetime : 2026-07-07 6:50
# User : geovindu
# Product : Visual Studio 2026
# Project : CSharpDesignPatterns
# File : ConcurrentFileLoggerProvider.cs
*/
using Microsoft.Extensions.Logging;
using System;
using System.Collections.Concurrent;
using System.Collections.Generic;
using System.Text;
using AbstractFactoryPattern.Abstractions.Logging;
using Microsoft.Extensions.Logging;
namespace AbstractFactoryPattern.Infrastructure.Logging
{
/// <summary>
///
/// </summary>
internal sealed class ConcurrentFileLoggerProvider : ILoggerProvider
{
private readonly FileLoggerOptions _opt;
private readonly ConcurrentDictionary<string, ILogger> _loggers = new();
private readonly ConcurrentDictionary<string, StreamWriter> _writers = new();
private bool _disposed;
public ConcurrentFileLoggerProvider(FileLoggerOptions opt)
{
_opt = opt;
if (!Directory.Exists(opt.LogRootDirectory))
Directory.CreateDirectory(opt.LogRootDirectory);
}
public ILogger CreateLogger(string categoryName)
{
ObjectDisposedException.ThrowIf(_disposed, nameof(ConcurrentFileLoggerProvider));
return _loggers.GetOrAdd(categoryName, c => new ConcurrentFileLogger(c, _opt, _writers));
}
public void Dispose()
{
if (_disposed) return;
_disposed = true;
foreach (var w in _writers.Values)
{
w.Flush();
w.Close();
w.Dispose();
}
_writers.Clear();
_loggers.Clear();
GC.SuppressFinalize(this);
}
}
}
、
/*
# encoding: utf-8
# 版权所有 2026 ©涂聚文有限公司™ ®
# 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎
# 描述:设计模式 Design Patterns Abstract Factory Pattern 抽象工厂模式
# Author : geovindu,Geovin Du 涂聚文.
# IDE : vs2026 c# .net 10
# os : windows 10
# database : mysql 9.0 sql server 2019, postgreSQL 17.0 Oracle 21c Neo4j
# Datetime : 2026-07-07 6:50
# User : geovindu
# Product : Visual Studio 2026
# Project : CSharpDesignPatterns
# File : LoggerExtensions.cs
*/
using Microsoft.Extensions.Logging;
using System;
using System.Collections.Generic;
using System.Text;
using AbstractFactoryPattern.Abstractions.Logging;
namespace AbstractFactoryPattern.Infrastructure.Logging
{
/// <summary>
///
/// </summary>
public static class LoggerExtensions
{
public static ILoggingBuilder AddEnterpriseFileLogger(this ILoggingBuilder builder, Action<FileLoggerOptions> config)
{
var opt = new FileLoggerOptions();
config(opt);
builder.AddProvider(new ConcurrentFileLoggerProvider(opt));
return builder;
}
}
}
/*
# encoding: utf-8
# 版权所有 2026 ©涂聚文有限公司™ ®
# 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎
# 描述:设计模式 Design Patterns Abstract Factory Pattern 抽象工厂模式
# Author : geovindu,Geovin Du 涂聚文.
# IDE : vs2026 c# .net 10
# os : windows 10
# database : mysql 9.0 sql server 2019, postgreSQL 17.0 Oracle 21c Neo4j
# Datetime : 2026-07-07 6:50
# User : geovindu
# Product : Visual Studio 2026
# Project : CSharpDesignPatterns
# File : BusinessSaleFactory.cs
*/
using AbstractFactoryPattern.Abstractions.Process;
using Microsoft.Extensions.Logging;
using System;
using System.Collections.Generic;
using System.Text;
namespace AbstractFactoryPattern.Domain.BusinessSale
{
/// <summary>
/// /
/// </summary>
public sealed class BusinessSaleFactory : IJewelryProcessFactory
{
private readonly ILogger<BusinessSaleFactory> _logger;
private readonly ILoggerFactory _factory;
public BusinessSaleFactory(ILogger<BusinessSaleFactory> logger, ILoggerFactory factory)
=> (_logger, _factory) = (logger, factory);
public IJewelryProcess CreateProcessInstance()
{
_logger.LogDebug("🏭【工厂创建】销售业务流程实例");
return new BusinessSaleProcess(_factory.CreateLogger<BusinessSaleProcess>());
}
}
}
/*
# encoding: utf-8
# 版权所有 2026 ©涂聚文有限公司™ ®
# 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎
# 描述:设计模式 Design Patterns Abstract Factory Pattern 抽象工厂模式
# Author : geovindu,Geovin Du 涂聚文.
# IDE : vs2026 c# .net 10
# os : windows 10
# database : mysql 9.0 sql server 2019, postgreSQL 17.0 Oracle 21c Neo4j
# Datetime : 2026-07-07 6:50
# User : geovindu
# Product : Visual Studio 2026
# Project : CSharpDesignPatterns
# File : BusinessSaleProcess.cs
*/
using AbstractFactoryPattern.Abstractions.Process;
using Microsoft.Extensions.Logging;
using System;
using System.Collections.Generic;
using System.Text;
namespace AbstractFactoryPattern.Domain.BusinessSale
{
/// <summary>
///
/// </summary>
public sealed class BusinessSaleProcess : IJewelryProcess
{
private readonly ILogger<BusinessSaleProcess> _logger;
public BusinessSaleProcess(ILogger<BusinessSaleProcess> logger) => _logger = logger;
public void ExecuteBusinessProcess()
{
_logger.LogInformation("🤝【销售业务】客户对接、定制洽谈、订单签约、售后维护");
_logger.LogDebug("✅【业务完成】客户档案、复购回访、售后工单处理");
}
}
}
/*
# encoding: utf-8
# 版权所有 2026 ©涂聚文有限公司™ ®
# 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎
# 描述:设计模式 Design Patterns Abstract Factory Pattern 抽象工厂模式
# Author : geovindu,Geovin Du 涂聚文.
# IDE : vs2026 c# .net 10
# os : windows 10
# database : mysql 9.0 sql server 2019, postgreSQL 17.0 Oracle 21c Neo4j
# Datetime : 2026-07-07 6:50
# User : geovindu
# Product : Visual Studio 2026
# Project : CSharpDesignPatterns
# File : DesignFactory.cs
*/
using AbstractFactoryPattern.Abstractions.Process;
using Microsoft.Extensions.Logging;
using System;
using System.Collections.Generic;
using System.Text;
namespace AbstractFactoryPattern.Domain.Design
{
/// <summary>
///
/// </summary>
public sealed class DesignFactory : IJewelryProcessFactory
{
private readonly ILogger<DesignFactory> _logger;
private readonly ILoggerFactory _factory;
public DesignFactory(ILogger<DesignFactory> logger, ILoggerFactory factory)
=> (_logger, _factory) = (logger, factory);
public IJewelryProcess CreateProcessInstance()
{
_logger.LogDebug("🏭【工厂创建】设计制图流程实例");
return new DesignProcess(_factory.CreateLogger<DesignProcess>());
}
}
}
/*
# encoding: utf-8
# 版权所有 2026 ©涂聚文有限公司™ ®
# 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎
# 描述:设计模式 Design Patterns Abstract Factory Pattern 抽象工厂模式
# Author : geovindu,Geovin Du 涂聚文.
# IDE : vs2026 c# .net 10
# os : windows 10
# database : mysql 9.0 sql server 2019, postgreSQL 17.0 Oracle 21c Neo4j
# Datetime : 2026-07-07 6:50
# User : geovindu
# Product : Visual Studio 2026
# Project : CSharpDesignPatterns
# File : DesignProcess.cs
*/
using AbstractFactoryPattern.Abstractions.Process;
using Microsoft.Extensions.Logging;
using System;
using System.Collections.Generic;
using System.Text;
namespace AbstractFactoryPattern.Domain.Design
{
/// <summary>
///
/// </summary>
public sealed class DesignProcess : IJewelryProcess
{
private readonly ILogger<DesignProcess> _logger;
public DesignProcess(ILogger<DesignProcess> logger) => _logger = logger;
public void ExecuteBusinessProcess()
{
_logger.LogInformation("🎨【设计制图】3D建模、款式渲染、工艺图纸绘制");
_logger.LogDebug("📝【设计确认】客户需求确认 → 生产图纸输出");
}
}
}
/*
# encoding: utf-8
# 版权所有 2026 ©涂聚文有限公司™ ®
# 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎
# 描述:设计模式 Design Patterns Abstract Factory Pattern 抽象工厂模式
# Author : geovindu,Geovin Du 涂聚文.
# IDE : vs2026 c# .net 10
# os : windows 10
# database : mysql 9.0 sql server 2019, postgreSQL 17.0 Oracle 21c Neo4j
# Datetime : 2026-07-07 6:50
# User : geovindu
# Product : Visual Studio 2026
# Project : CSharpDesignPatterns
# File : FinanceFactory.cs
*/
using AbstractFactoryPattern.Abstractions.Process;
using Microsoft.Extensions.Logging;
using System;
using System.Collections.Generic;
using System.Text;
namespace AbstractFactoryPattern.Domain.Finance
{
/// <summary>
///
/// </summary>
public sealed class FinanceFactory : IJewelryProcessFactory
{
private readonly ILogger<FinanceFactory> _logger;
private readonly ILoggerFactory _factory;
public FinanceFactory(ILogger<FinanceFactory> logger, ILoggerFactory factory)
=> (_logger, _factory) = (logger, factory);
public IJewelryProcess CreateProcessInstance()
{
_logger.LogDebug("🏭【工厂创建】财务流程实例");
return new FinanceProcess(_factory.CreateLogger<FinanceProcess>());
}
}
}
/*
# encoding: utf-8
# 版权所有 2026 ©涂聚文有限公司™ ®
# 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎
# 描述:设计模式 Design Patterns Abstract Factory Pattern 抽象工厂模式
# Author : geovindu,Geovin Du 涂聚文.
# IDE : vs2026 c# .net 10
# os : windows 10
# database : mysql 9.0 sql server 2019, postgreSQL 17.0 Oracle 21c Neo4j
# Datetime : 2026-07-07 6:50
# User : geovindu
# Product : Visual Studio 2026
# Project : CSharpDesignPatterns
# File : FinanceProcess.cs
*/
using AbstractFactoryPattern.Abstractions.Process;
using Microsoft.Extensions.Logging;
using System;
using System.Collections.Generic;
using System.Text;
namespace AbstractFactoryPattern.Domain.Finance
{
/// <summary>
/// /
/// </summary>
public sealed class FinanceProcess : IJewelryProcess
{
private readonly ILogger<FinanceProcess> _logger;
public FinanceProcess(ILogger<FinanceProcess> logger) => _logger = logger;
public void ExecuteBusinessProcess()
{
_logger.LogInformation("💰【财务核算】成本、营收、进销存、薪资、发票全流程");
_logger.LogDebug("📊【财务完成】月度报表、税务申报、对账结算完成");
}
}
}
/*
# encoding: utf-8
# 版权所有 2026 ©涂聚文有限公司™ ®
# 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎
# 描述:设计模式 Design Patterns Abstract Factory Pattern 抽象工厂模式
# Author : geovindu,Geovin Du 涂聚文.
# IDE : vs2026 c# .net 10
# os : windows 10
# database : mysql 9.0 sql server 2019, postgreSQL 17.0 Oracle 21c Neo4j
# Datetime : 2026-07-07 6:50
# User : geovindu
# Product : Visual Studio 2026
# Project : CSharpDesignPatterns
# File : HRFactory.cs
*/
using AbstractFactoryPattern.Abstractions.Process;
using Microsoft.Extensions.Logging;
using System;
using System.Collections.Generic;
using System.Text;
namespace AbstractFactoryPattern.Domain.HumanResourceAdmin
{
/// <summary>
///
/// </summary>
public sealed class HRFactory : IJewelryProcessFactory
{
private readonly ILogger<HRFactory> _logger;
private readonly ILoggerFactory _factory;
public HRFactory(ILogger<HRFactory> logger, ILoggerFactory factory)
=> (_logger, _factory) = (logger, factory);
public IJewelryProcess CreateProcessInstance()
{
_logger.LogDebug("🏭【工厂创建】人事行政流程实例");
return new HRProcess(_factory.CreateLogger<HRProcess>());
}
}
}
/*
# encoding: utf-8
# 版权所有 2026 ©涂聚文有限公司™ ®
# 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎
# 描述:设计模式 Design Patterns Abstract Factory Pattern 抽象工厂模式
# Author : geovindu,Geovin Du 涂聚文.
# IDE : vs2026 c# .net 10
# os : windows 10
# database : mysql 9.0 sql server 2019, postgreSQL 17.0 Oracle 21c Neo4j
# Datetime : 2026-07-07 6:50
# User : geovindu
# Product : Visual Studio 2026
# Project : CSharpDesignPatterns
# File : HRProcess.cs
*/
using AbstractFactoryPattern.Abstractions.Process;
using Microsoft.Extensions.Logging;
using System;
using System.Collections.Generic;
using System.Text;
namespace AbstractFactoryPattern.Domain.HumanResourceAdmin
{
/// <summary>
/// /
/// </summary>
public sealed class HRProcess : IJewelryProcess
{
private readonly ILogger<HRProcess> _logger;
public HRProcess(ILogger<HRProcess> logger) => _logger = logger;
public void ExecuteBusinessProcess()
{
_logger.LogInformation("👥【人事行政】招聘、入职、考勤、绩效、后勤保障");
_logger.LogDebug("✅【行政完成】员工档案、制度执行、物资采购完成");
}
}
}
/*
# encoding: utf-8
# 版权所有 2026 ©涂聚文有限公司™ ®
# 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎
# 描述:设计模式 Design Patterns Abstract Factory Pattern 抽象工厂模式
# Author : geovindu,Geovin Du 涂聚文.
# IDE : vs2026 c# .net 10
# os : windows 10
# database : mysql 9.0 sql server 2019, postgreSQL 17.0 Oracle 21c Neo4j
# Datetime : 2026-07-07 6:50
# User : geovindu
# Product : Visual Studio 2026
# Project : CSharpDesignPatterns
# File : ITFactory.cs
*/
using AbstractFactoryPattern.Abstractions.Process;
using Microsoft.Extensions.Logging;
using System;
using System.Collections.Generic;
using System.Text;
namespace AbstractFactoryPattern.Domain.InformationTech
{
/// <summary>
/// /
/// </summary>
public sealed class ITFactory : IJewelryProcessFactory
{
private readonly ILogger<ITFactory> _logger;
private readonly ILoggerFactory _factory;
public ITFactory(ILogger<ITFactory> logger, ILoggerFactory factory)
=> (_logger, _factory) = (logger, factory);
public IJewelryProcess CreateProcessInstance()
{
_logger.LogDebug("🏭【工厂创建】IT运维流程实例");
return new ITProcess(_factory.CreateLogger<ITProcess>());
}
}
}
/*
# encoding: utf-8
# 版权所有 2026 ©涂聚文有限公司™ ®
# 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎
# 描述:设计模式 Design Patterns Abstract Factory Pattern 抽象工厂模式
# Author : geovindu,Geovin Du 涂聚文.
# IDE : vs2026 c# .net 10
# os : windows 10
# database : mysql 9.0 sql server 2019, postgreSQL 17.0 Oracle 21c Neo4j
# Datetime : 2026-07-07 6:50
# User : geovindu
# Product : Visual Studio 2026
# Project : CSharpDesignPatterns
# File : ITProcess.cs
*/
using AbstractFactoryPattern.Abstractions.Process;
using Microsoft.Extensions.Logging;
using System;
using System.Collections.Generic;
using System.Text;
namespace AbstractFactoryPattern.Domain.InformationTech
{
/// <summary>
///
/// </summary>
public sealed class ITProcess : IJewelryProcess
{
private readonly ILogger<ITProcess> _logger;
public ITProcess(ILogger<ITProcess> logger) => _logger = logger;
public void ExecuteBusinessProcess()
{
_logger.LogInformation("💻【IT运维】系统维护、网络安全、数据备份、权限管理");
_logger.LogDebug("✅【IT完成】服务器监控、故障排查、版本更新完成");
}
}
}
/*
# encoding: utf-8
# 版权所有 2026 ©涂聚文有限公司™ ®
# 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎
# 描述:设计模式 Design Patterns Abstract Factory Pattern 抽象工厂模式
# Author : geovindu,Geovin Du 涂聚文.
# IDE : vs2026 c# .net 10
# os : windows 10
# database : mysql 9.0 sql server 2019, postgreSQL 17.0 Oracle 21c Neo4j
# Datetime : 2026-07-07 6:50
# User : geovindu
# Product : Visual Studio 2026
# Project : CSharpDesignPatterns
# File : LogisticsFactory.cs
*/
using AbstractFactoryPattern.Abstractions.Process;
using Microsoft.Extensions.Logging;
using System;
using System.Collections.Generic;
using System.Text;
namespace AbstractFactoryPattern.Domain.Logistics
{
/// <summary>
///
/// </summary>
public sealed class LogisticsFactory : IJewelryProcessFactory
{
private readonly ILogger<LogisticsFactory> _logger;
private readonly ILoggerFactory _factory;
public LogisticsFactory(ILogger<LogisticsFactory> logger, ILoggerFactory factory)
=> (_logger, _factory) = (logger, factory);
public IJewelryProcess CreateProcessInstance()
{
_logger.LogDebug("🏭【工厂创建】物流流程实例");
return new LogisticsProcess(_factory.CreateLogger<LogisticsProcess>());
}
}
}
/*
# encoding: utf-8
# 版权所有 2026 ©涂聚文有限公司™ ®
# 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎
# 描述:设计模式 Design Patterns Abstract Factory Pattern 抽象工厂模式
# Author : geovindu,Geovin Du 涂聚文.
# IDE : vs2026 c# .net 10
# os : windows 10
# database : mysql 9.0 sql server 2019, postgreSQL 17.0 Oracle 21c Neo4j
# Datetime : 2026-07-07 6:50
# User : geovindu
# Product : Visual Studio 2026
# Project : CSharpDesignPatterns
# File : LogisticsProcess.cs
*/
using AbstractFactoryPattern.Abstractions.Process;
using Microsoft.Extensions.Logging;
using System;
using System.Collections.Generic;
using System.Text;
namespace AbstractFactoryPattern.Domain.Logistics
{
/// <summary>
///
/// </summary>
public sealed class LogisticsProcess : IJewelryProcess
{
private readonly ILogger<LogisticsProcess> _logger;
public LogisticsProcess(ILogger<LogisticsProcess> logger) => _logger = logger;
public void ExecuteBusinessProcess()
{
_logger.LogInformation("🚚【安全物流】保价运输、全程轨迹跟踪、专人押运");
_logger.LogDebug("✅【物流完成】客户签收、交接单归档、异常理赔登记");
}
}
}
/*
# encoding: utf-8
# 版权所有 2026 ©涂聚文有限公司™ ®
# 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎
# 描述:设计模式 Design Patterns Abstract Factory Pattern 抽象工厂模式
# Author : geovindu,Geovin Du 涂聚文.
# IDE : vs2026 c# .net 10
# os : windows 10
# database : mysql 9.0 sql server 2019, postgreSQL 17.0 Oracle 21c Neo4j
# Datetime : 2026-07-07 6:50
# User : geovindu
# Product : Visual Studio 2026
# Project : CSharpDesignPatterns
# File : MarketingFactory.cs
*/
using AbstractFactoryPattern.Abstractions.Process;
using Microsoft.Extensions.Logging;
using System;
using System.Collections.Generic;
using System.Text;
namespace AbstractFactoryPattern.Domain.Marketing
{
/// <summary>
///
/// </summary>
public sealed class MarketingFactory : IJewelryProcessFactory
{
private readonly ILogger<MarketingFactory> _logger;
private readonly ILoggerFactory _factory;
public MarketingFactory(ILogger<MarketingFactory> logger, ILoggerFactory factory)
=> (_logger, _factory) = (logger, factory);
public IJewelryProcess CreateProcessInstance()
{
_logger.LogDebug("🏭【工厂创建】营销流程实例");
return new MarketingProcess(_factory.CreateLogger<MarketingProcess>());
}
}
}
/*
# encoding: utf-8
# 版权所有 2026 ©涂聚文有限公司™ ®
# 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎
# 描述:设计模式 Design Patterns Abstract Factory Pattern 抽象工厂模式
# Author : geovindu,Geovin Du 涂聚文.
# IDE : vs2026 c# .net 10
# os : windows 10
# database : mysql 9.0 sql server 2019, postgreSQL 17.0 Oracle 21c Neo4j
# Datetime : 2026-07-07 6:50
# User : geovindu
# Product : Visual Studio 2026
# Project : CSharpDesignPatterns
# File : MarketingProcess.cs
*/
using AbstractFactoryPattern.Abstractions.Process;
using Microsoft.Extensions.Logging;
using System;
using System.Collections.Generic;
using System.Text;
namespace AbstractFactoryPattern.Domain.Marketing
{
/// <summary>
///
/// </summary>
public sealed class MarketingProcess : IJewelryProcess
{
private readonly ILogger<MarketingProcess> _logger;
public MarketingProcess(ILogger<MarketingProcess> logger) => _logger = logger;
public void ExecuteBusinessProcess()
{
_logger.LogInformation("📣【品牌营销】线上投放、门店活动、新品推广、会员运营");
_logger.LogDebug("📈【营销完成】流量统计、ROI核算、客户沉淀完成");
}
}
}
调用:
/*
# encoding: utf-8
# 版权所有 2026 ©涂聚文有限公司™ ®
# 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎
# 描述:设计模式 Design Patterns Abstract Factory Pattern 抽象工厂模式
# Author : geovindu,Geovin Du 涂聚文.
# IDE : vs2026 c# .net 10
# os : windows 10
# database : mysql 9.0 sql server 2019, postgreSQL 17.0 Oracle 21c Neo4j
# Datetime : 2026-07-07 6:50
# User : geovindu
# Product : Visual Studio 2026
# Project : CSharpDesignPatterns
# File : AbstractFactoryBll.cs
*/
using AbstractFactoryPattern;
using AbstractFactoryPattern.Abstractions.Process;
using AbstractFactoryPattern.Application;
using AbstractFactoryPattern.Domain.BusinessSale;
using AbstractFactoryPattern.Domain.Design;
using AbstractFactoryPattern.Domain.Finance;
using AbstractFactoryPattern.Domain.HumanResourceAdmin;
using AbstractFactoryPattern.Domain.InformationTech;
using AbstractFactoryPattern.Domain.Logistics;
using AbstractFactoryPattern.Domain.Marketing;
using AbstractFactoryPattern.Domain.MaterialPurchase;
using AbstractFactoryPattern.Domain.Package;
using AbstractFactoryPattern.Domain.Production;
using AbstractFactoryPattern.Domain.QualityInspect;
using AbstractFactoryPattern.Domain.Training;
using AbstractFactoryPattern.Infrastructure.Logging;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Logging;
using System;
using System.Collections.Generic;
using System.IO;
using System.Text;
namespace BLL
{
public class AbstractFactoryBll
{
/// <summary>
///
/// </summary>
public async void Demo()
{
var host = Host.CreateDefaultBuilder()
.ConfigureLogging(log =>
{
log.ClearProviders();
log.AddEnterpriseFileLogger(opt =>
{
opt.LogRootDirectory = Path.Combine(AppContext.BaseDirectory, "Logs");
opt.LogFileNameTemplate = "app-{0}.log";
opt.EnableStructuredJsonLog = false;
});
})
.ConfigureServices(s =>
{
s.AddTransient<IJewelryProcessFactory, MaterialPurchaseFactory>();
s.AddTransient<IJewelryProcessFactory, DesignFactory>();
s.AddTransient<IJewelryProcessFactory, ProductionFactory>();
s.AddTransient<IJewelryProcessFactory, QualityInspectFactory>();
s.AddTransient<IJewelryProcessFactory, PackageFactory>();
s.AddTransient<IJewelryProcessFactory, LogisticsFactory>();
s.AddTransient<IJewelryProcessFactory, FinanceFactory>();
s.AddTransient<IJewelryProcessFactory, MarketingFactory>();
s.AddTransient<IJewelryProcessFactory, BusinessSaleFactory>();
s.AddTransient<IJewelryProcessFactory, HRFactory>();
s.AddTransient<IJewelryProcessFactory, ITFactory>();
s.AddTransient<IJewelryProcessFactory, TrainingFactory>();
s.AddTransient<JewelryProcessScheduler>();
})
.Build();
var scheduler = host.Services.GetRequiredService<JewelryProcessScheduler>();
// 运行
scheduler.RunAllSerial();
// await scheduler.RunAllConcurrentAsync();
await host.StopAsync();
}
}
}
输出:
[2026-07-07 06:32:17.751] [Information] 🧵2 | AbstractFactoryPattern.Application.JewelryProcessScheduler | 🚀==================== 珠宝全业务流程启动 ==================== [2026-07-07 06:32:17.762] [Information] 🧵2 | AbstractFactoryPattern.Domain.MaterialPurchase.MaterialPurchaseProcess | 📦【原料采购】黄金、钻石、宝石、铂金原材料采购启动 [2026-07-07 06:32:17.763] [Information] 🧵2 | AbstractFactoryPattern.Domain.MaterialPurchase.MaterialPurchaseProcess | ✅【原料入库】原材料核验完成,正式入库登记 [2026-07-07 06:32:17.763] [Information] 🧵2 | AbstractFactoryPattern.Domain.Design.DesignProcess | 🎨【设计制图】3D建模、款式渲染、工艺图纸绘制 [2026-07-07 06:32:17.764] [Information] 🧵2 | AbstractFactoryPattern.Domain.Production.ProductionProcess | 🔥【加工生产】开模、铸造、镶嵌、抛光全流程生产 [2026-07-07 06:32:17.765] [Information] 🧵2 | AbstractFactoryPattern.Domain.QualityInspect.QualityInspectProcess | 🔍【成品质检】材质、工艺、尺寸、外观全项检验 [2026-07-07 06:32:17.766] [Information] 🧵2 | AbstractFactoryPattern.Domain.Package.PackageProcess | 🎁【成品包装】礼盒、证书、防伪标签全套封装 [2026-07-07 06:32:17.766] [Information] 🧵2 | AbstractFactoryPattern.Domain.Logistics.LogisticsProcess | 🚚【安全物流】保价运输、全程轨迹跟踪、专人押运 [2026-07-07 06:32:17.767] [Information] 🧵2 | AbstractFactoryPattern.Domain.Finance.FinanceProcess | 💰【财务核算】成本、营收、进销存、薪资、发票全流程 [2026-07-07 06:32:17.768] [Information] 🧵2 | AbstractFactoryPattern.Domain.Marketing.MarketingProcess | 📣【品牌营销】线上投放、门店活动、新品推广、会员运营 [2026-07-07 06:32:17.768] [Information] 🧵2 | AbstractFactoryPattern.Domain.BusinessSale.BusinessSaleProcess | 🤝【销售业务】客户对接、定制洽谈、订单签约、售后维护 [2026-07-07 06:32:17.769] [Information] 🧵2 | AbstractFactoryPattern.Domain.HumanResourceAdmin.HRProcess | 👥【人事行政】招聘、入职、考勤、绩效、后勤保障 [2026-07-07 06:32:17.769] [Information] 🧵2 | AbstractFactoryPattern.Domain.InformationTech.ITProcess | 💻【IT运维】系统维护、网络安全、数据备份、权限管理 [2026-07-07 06:32:17.770] [Information] 🧵2 | AbstractFactoryPattern.Domain.Training.TrainingProcess | 📚【员工培训】珠宝知识、工艺技能、销售话术、服务礼仪 [2026-07-07 06:32:17.770] [Information] 🧵2 | AbstractFactoryPattern.Domain.Training.TrainingProcess | ✅【培训完成】员工能力提升,认证上岗 [2026-07-07 06:32:17.770] [Information] 🧵2 | AbstractFactoryPattern.Application.JewelryProcessScheduler | 🎉==================== 所有业务流程执行完成 ==================== [2026-07-07 06:32:52.690] [Information] 🧵2 | AbstractFactoryPattern.Application.JewelryProcessScheduler | 🚀==================== 珠宝全业务流程启动 ==================== [2026-07-07 06:32:52.700] [Information] 🧵2 | AbstractFactoryPattern.Domain.MaterialPurchase.MaterialPurchaseProcess | 📦【原料采购】黄金、钻石、宝石、铂金原材料采购启动 [2026-07-07 06:32:52.700] [Information] 🧵2 | AbstractFactoryPattern.Domain.MaterialPurchase.MaterialPurchaseProcess | ✅【原料入库】原材料核验完成,正式入库登记 [2026-07-07 06:32:52.701] [Information] 🧵2 | AbstractFactoryPattern.Domain.Design.DesignProcess | 🎨【设计制图】3D建模、款式渲染、工艺图纸绘制 [2026-07-07 06:32:52.701] [Information] 🧵2 | AbstractFactoryPattern.Domain.Production.ProductionProcess | 🔥【加工生产】开模、铸造、镶嵌、抛光全流程生产 [2026-07-07 06:32:52.702] [Information] 🧵2 | AbstractFactoryPattern.Domain.QualityInspect.QualityInspectProcess | 🔍【成品质检】材质、工艺、尺寸、外观全项检验 [2026-07-07 06:32:52.702] [Information] 🧵2 | AbstractFactoryPattern.Domain.Package.PackageProcess | 🎁【成品包装】礼盒、证书、防伪标签全套封装 [2026-07-07 06:32:52.703] [Information] 🧵2 | AbstractFactoryPattern.Domain.Logistics.LogisticsProcess | 🚚【安全物流】保价运输、全程轨迹跟踪、专人押运 [2026-07-07 06:32:52.703] [Information] 🧵2 | AbstractFactoryPattern.Domain.Finance.FinanceProcess | 💰【财务核算】成本、营收、进销存、薪资、发票全流程 [2026-07-07 06:32:52.704] [Information] 🧵2 | AbstractFactoryPattern.Domain.Marketing.MarketingProcess | 📣【品牌营销】线上投放、门店活动、新品推广、会员运营 [2026-07-07 06:32:52.704] [Information] 🧵2 | AbstractFactoryPattern.Domain.BusinessSale.BusinessSaleProcess | 🤝【销售业务】客户对接、定制洽谈、订单签约、售后维护 [2026-07-07 06:32:52.705] [Information] 🧵2 | AbstractFactoryPattern.Domain.HumanResourceAdmin.HRProcess | 👥【人事行政】招聘、入职、考勤、绩效、后勤保障 [2026-07-07 06:32:52.705] [Information] 🧵2 | AbstractFactoryPattern.Domain.InformationTech.ITProcess | 💻【IT运维】系统维护、网络安全、数据备份、权限管理 [2026-07-07 06:32:52.706] [Information] 🧵2 | AbstractFactoryPattern.Domain.Training.TrainingProcess | 📚【员工培训】珠宝知识、工艺技能、销售话术、服务礼仪 [2026-07-07 06:32:52.706] [Information] 🧵2 | AbstractFactoryPattern.Domain.Training.TrainingProcess | ✅【培训完成】员工能力提升,认证上岗 [2026-07-07 06:32:52.706] [Information] 🧵2 | AbstractFactoryPattern.Application.JewelryProcessScheduler | 🎉==================== 所有业务流程执行完成 ====================
哲学管理(学)人生, 文学艺术生活, 自动(计算机学)物理(学)工作, 生物(学)化学逆境, 历史(学)测绘(学)时间, 经济(学)数学金钱(理财), 心理(学)医学情绪, 诗词美容情感, 美学建筑(学)家园, 解构建构(分析)整合学习, 智商情商(IQ、EQ)运筹(学)生存.---Geovin Du(涂聚文)
浙公网安备 33010602011771号