python: Steady-State Pattern

📅 2026/7/3 3:10:04 👁️ 阅读次数 📝 编程学习
python: Steady-State Pattern

项目结构:

一个基于Python的珠宝行业企业级稳态系统设计模式(Steady-State Pattern)。系统采用严格分层架构,包含核心层(SteadyStateService基类)、业务服务层(12个具体业务服务)和工具层(ResourceRecycler资源回收器)。主要特点包括:1) 单一职责原则,每个服务仅处理特定业务;2) 通过ServiceManager统一管理服务生命周期;3) 自动资源回收机制,定期清理累积的业务数据;4) 线程安全的服务运行模式。系统涵盖了珠宝行业的完整业务流程(原料采购、设计、生产、质检等12个环节),通过稳态模式确保长期运行时的资源管理效率。

pip install python-dotenv pip install python-extras pip install gc-extras python-dotenv>=1.0.0 gc-extras>=0.1.0
# encoding: utf-8 # 版权所有 2026 ©涂聚文有限公司™ ® # 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎 # 描述:Steady-State Pattern 稳态模式 # Author : geovindu,Geovin Du 涂聚文. # IDE : PyCharm 2024.3.6 python 3.11 # os : windows 10 # database : mysql 9.0 sql server 2019, postgreSQL 17.0 Oracle 21c Neo4j # Datetime : 2026/7/2 20:02 # User : geovindu # Product : PyCharm # Project : pydesginpattern # File : resource_recycler.py import gc from typing import List # 单一职责:仅处理资源回收,所有业务复用 class ResourceRecycler: """ 工具层:通用资源回收 """ @staticmethod def recycle(pool: List, service_name: str) -> int: """ 通用资源回收方法:清空资源池 + 强制垃圾回收" :param pool: :param service_name: :return: """ count = len(pool) if count > 0: pool.clear() gc.collect() return count # encoding: utf-8 # 版权所有 2026 ©涂聚文有限公司™ ® # 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎 # 描述:Steady-State Pattern 稳态模式 # Author : geovindu,Geovin Du 涂聚文. # IDE : PyCharm 2024.3.6 python 3.11 # os : windows 10 # database : mysql 9.0 sql server 2019, postgreSQL 17.0 Oracle 21c Neo4j # Datetime : 2026/7/2 20:04 # User : geovindu # Product : PyCharm # Project : pydesginpattern # File : base_service.py import time import threading from abc import ABC, abstractmethod from typing import Optional, List from SteadyStatePattern.utils.resource_recycler import ResourceRecycler # 抽象基类:仅定义稳态服务规范,不实现具体业务 class SteadyStateService(ABC): """ 核心层:稳态服务基类 """ def __init__(self, service_name: str, recycle_interval: int = 5): # 基础配置 self.service_name = service_name self.recycle_interval = recycle_interval self.is_running = False # 资源池(所有累积资源统一管理) self.resource_pool: List = [] # 线程管理 self.thread: Optional[threading.Thread] = None self.recycler = ResourceRecycler() @abstractmethod def _process(self)-> None: """ 子类必须实现:纯业务逻辑,不掺杂回收逻辑 :return: """ pass def _recycle(self)-> None: """ 稳态核心:自动回收资源 :return: """ recycled_count = self.recycler.recycle(self.resource_pool, self.service_name) if recycled_count > 0: print(f"✅ [{self.service_name}] 回收 {recycled_count} 个累积资源") def _run_loop(self)-> None: """ 服务主循环:业务执行 + 定时回收 :return: """ self.is_running = True last_recycle = time.time() while self.is_running: # 1. 执行业务 self._process() # 2. 定时回收 if time.time() - last_recycle >= self.recycle_interval: self._recycle() last_recycle = time.time() time.sleep(1) def start(self)-> None: """ 启动服务(线程隔离) :return: """ if not self.is_running: print(f"🚀 启动服务:{self.service_name}") self.thread = threading.Thread(target=self._run_loop, daemon=True) self.thread.start() def stop(self)-> None: """ 停止服务 + 最终回收 :return: """ self.is_running = False if self.thread: self.thread.join() self._recycle() print(f"🛑 停止服务:{self.service_name}") # encoding: utf-8 # 版权所有 2026 ©涂聚文有限公司™ ® # 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎 # 描述:Steady-State Pattern 稳态模式 # Author : geovindu,Geovin Du 涂聚文. # IDE : PyCharm 2024.3.6 python 3.11 # os : windows 10 # database : mysql 9.0 sql server 2019, postgreSQL 17.0 Oracle 21c Neo4j # Datetime : 2026/7/2 20:19 # User : geovindu # Product : PyCharm # Project : pydesginpattern # File : service_manager.py from typing import List from SteadyStatePattern.core.base_service import SteadyStateService # 单一职责:统一管理所有服务的启动、停止、监控 class ServiceManager: """ 核心层:服务管理器 """ def __init__(self): self.services: List[SteadyStateService] = [] def register(self, service: SteadyStateService): """ 注册服务 :param service: :return: """ self.services.append(service) def start_all(self): """ 启动所有服务 :return: """ print("\n======= 启动全部珠宝业务稳态服务 =======") for service in self.services: service.start() def stop_all(self): """ 停止所有服务 :return: """ print("\n======= 停止全部珠宝业务稳态服务 =======") for service in self.services: service.stop()
# encoding: utf-8 # 版权所有 2026 ©涂聚文有限公司™ ® # 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎 # 描述:Steady-State Pattern 稳态模式 # Author : geovindu,Geovin Du 涂聚文. # IDE : PyCharm 2024.3.6 python 3.11 # os : windows 10 # database : mysql 9.0 sql server 2019, postgreSQL 17.0 Oracle 21c Neo4j # Datetime : 2026/7/2 20:05 # User : geovindu # Product : PyCharm # Project : pydesginpattern # File : material_service.py from SteadyStatePattern.core.base_service import SteadyStateService import time class MaterialPurchaseService(SteadyStateService): """ 业务服务层 """ def _process(self)->None: self.resource_pool.append(f"原料核验单_{time.time()}") print(f"📦 [原料采购] 核验金料/钻石,累积单据:{len(self.resource_pool)}") # encoding: utf-8 # 版权所有 2026 ©涂聚文有限公司™ ® # 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎 # 描述:Steady-State Pattern 稳态模式 # Author : geovindu,Geovin Du 涂聚文. # IDE : PyCharm 2024.3.6 python 3.11 # os : windows 10 # database : mysql 9.0 sql server 2019, postgreSQL 17.0 Oracle 21c Neo4j # Datetime : 2026/7/2 20:06 # User : geovindu # Product : PyCharm # Project : pydesginpattern # File : design_service.py from SteadyStatePattern.core.base_service import SteadyStateService import time class DesignService(SteadyStateService): """ """ def _process(self)->None: self.resource_pool.append(f"珠宝设计图_{time.time()}") print(f"🎨 [设计制图] 款式绘制,累积图纸:{len(self.resource_pool)}") # encoding: utf-8 # 版权所有 2026 ©涂聚文有限公司™ ® # 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎 # 描述:Steady-State Pattern 稳态模式 # Author : geovindu,Geovin Du 涂聚文. # IDE : PyCharm 2024.3.6 python 3.11 # os : windows 10 # database : mysql 9.0 sql server 2019, postgreSQL 17.0 Oracle 21c Neo4j # Datetime : 2026/7/2 20:07 # User : geovindu # Product : PyCharm # Project : pydesginpattern # File : production_service.py from SteadyStatePattern.core.base_service import SteadyStateService import time class ProductionService(SteadyStateService): """ """ def _process(self)->None: self.resource_pool.append(f"生产工单_{time.time()}") print(f"⚙️ [加工生产] 镶嵌/成型,累积工单:{len(self.resource_pool)}") # encoding: utf-8 # 版权所有 2026 ©涂聚文有限公司™ ® # 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎 # 描述:Steady-State Pattern 稳态模式 # Author : geovindu,Geovin Du 涂聚文. # IDE : PyCharm 2024.3.6 python 3.11 # os : windows 10 # database : mysql 9.0 sql server 2019, postgreSQL 17.0 Oracle 21c Neo4j # Datetime : 2026/7/2 20:09 # User : geovindu # Product : PyCharm # Project : pydesginpattern # File : quality_service.py from SteadyStatePattern.core.base_service import SteadyStateService import time class QualityCheckService(SteadyStateService): """ """ def _process(self)->None: self.resource_pool.append(f"质检报告_{time.time()}") print(f"🔍 [质检] 工艺/成色检测,累积报告:{len(self.resource_pool)}") # encoding: utf-8 # 版权所有 2026 ©涂聚文有限公司™ ® # 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎 # 描述:Steady-State Pattern 稳态模式 # Author : geovindu,Geovin Du 涂聚文. # IDE : PyCharm 2024.3.6 python 3.11 # os : windows 10 # database : mysql 9.0 sql server 2019, postgreSQL 17.0 Oracle 21c Neo4j # Datetime : 2026/7/2 20:10 # User : geovindu # Product : PyCharm # Project : pydesginpattern # File : package_service.py from SteadyStatePattern.core.base_service import SteadyStateService import time class PackageService(SteadyStateService): """ """ def _process(self)->None: self.resource_pool.append(f"包装记录_{time.time()}") print(f"🎁 [包装] 礼盒/防伪,累积记录:{len(self.resource_pool)}") # encoding: utf-8 # 版权所有 2026 ©涂聚文有限公司™ ® # 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎 # 描述:Steady-State Pattern 稳态模式 # Author : geovindu,Geovin Du 涂聚文. # IDE : PyCharm 2024.3.6 python 3.11 # os : windows 10 # database : mysql 9.0 sql server 2019, postgreSQL 17.0 Oracle 21c Neo4j # Datetime : 2026/7/2 20:11 # User : geovindu # Product : PyCharm # Project : pydesginpattern # File : logistics_service.py from SteadyStatePattern.core.base_service import SteadyStateService import time class LogisticsService(SteadyStateService): """ """ def _process(self)->None: self.resource_pool.append(f"物流单号_{time.time()}") print(f"🚚 [物流] 配送发货,累积单号:{len(self.resource_pool)}") # encoding: utf-8 # 版权所有 2026 ©涂聚文有限公司™ ® # 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎 # 描述:Steady-State Pattern 稳态模式 # Author : geovindu,Geovin Du 涂聚文. # IDE : PyCharm 2024.3.6 python 3.11 # os : windows 10 # database : mysql 9.0 sql server 2019, postgreSQL 17.0 Oracle 21c Neo4j # Datetime : 2026/7/2 20:11 # User : geovindu # Product : PyCharm # Project : pydesginpattern # File : finance_service.py from SteadyStatePattern.core.base_service import SteadyStateService import time class FinanceService(SteadyStateService): """ """ def _process(self)->None: self.resource_pool.append(f"财务凭证_{time.time()}") print(f"💰 [财务] 成本/对账,累积凭证:{len(self.resource_pool)}") # encoding: utf-8 # 版权所有 2026 ©涂聚文有限公司™ ® # 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎 # 描述:Steady-State Pattern 稳态模式 # Author : geovindu,Geovin Du 涂聚文. # IDE : PyCharm 2024.3.6 python 3.11 # os : windows 10 # database : mysql 9.0 sql server 2019, postgreSQL 17.0 Oracle 21c Neo4j # Datetime : 2026/7/2 20:12 # User : geovindu # Product : PyCharm # Project : pydesginpattern # File : marketing_service.py from SteadyStatePattern.core.base_service import SteadyStateService import time class MarketingService(SteadyStateService): """ """ def _process(self)->None: self.resource_pool.append(f"推广素材_{time.time()}") print(f"📢 [营销] 线上/线下推广,累积素材:{len(self.resource_pool)}") # encoding: utf-8 # 版权所有 2026 ©涂聚文有限公司™ ® # 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎 # 描述:Steady-State Pattern 稳态模式 # Author : geovindu,Geovin Du 涂聚文. # IDE : PyCharm 2024.3.6 python 3.11 # os : windows 10 # database : mysql 9.0 sql server 2019, postgreSQL 17.0 Oracle 21c Neo4j # Datetime : 2026/7/2 20:13 # User : geovindu # Product : PyCharm # Project : pydesginpattern # File : business_service.py from SteadyStatePattern.core.base_service import SteadyStateService import time class BusinessService(SteadyStateService): """ """ def _process(self)->None: self.resource_pool.append(f"客户订单_{time.time()}") print(f"🤝 [业务] 订单处理,累积订单:{len(self.resource_pool)}") # encoding: utf-8 # 版权所有 2026 ©涂聚文有限公司™ ® # 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎 # 描述:Steady-State Pattern 稳态模式 # Author : geovindu,Geovin Du 涂聚文. # IDE : PyCharm 2024.3.6 python 3.11 # os : windows 10 # database : mysql 9.0 sql server 2019, postgreSQL 17.0 Oracle 21c Neo4j # Datetime : 2026/7/2 20:13 # User : geovindu # Product : PyCharm # Project : pydesginpattern # File : hr_service.py from SteadyStatePattern.core.base_service import SteadyStateService import time class HRAdminService(SteadyStateService): """ """ def _process(self)->None: self.resource_pool.append(f"人事记录_{time.time()}") print(f"👥 [人事] 考勤/行政,累积记录:{len(self.resource_pool)}") # encoding: utf-8 # 版权所有 2026 ©涂聚文有限公司™ ® # 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎 # 描述:Steady-State Pattern 稳态模式 # Author : geovindu,Geovin Du 涂聚文. # IDE : PyCharm 2024.3.6 python 3.11 # os : windows 10 # database : mysql 9.0 sql server 2019, postgreSQL 17.0 Oracle 21c Neo4j # Datetime : 2026/7/2 20:14 # User : geovindu # Product : PyCharm # Project : pydesginpattern # File : it_service.py from SteadyStatePattern.core.base_service import SteadyStateService import time class ITService(SteadyStateService): """ """ def _process(self)->None: self.resource_pool.append(f"系统日志_{time.time()}") print(f"💻 [IT] 系统维护,累积日志:{len(self.resource_pool)}")

调用:

# encoding: utf-8 # 版权所有 2026 ©涂聚文有限公司™ ® # 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎 # 描述:Steady-State Pattern 稳态模式 # Author : geovindu,Geovin Du 涂聚文. # IDE : PyCharm 2024.3.6 python 3.11 # os : windows 10 # database : mysql 9.0 sql server 2019, postgreSQL 17.0 Oracle 21c Neo4j # Datetime : 2026/7/2 20:16 # User : geovindu # Product : PyCharm # Project : pydesginpattern # File : SteadyStateBll.py import time from SteadyStatePattern.core.service_manager import ServiceManager # 导入所有业务服务 from SteadyStatePattern.services.material_service import MaterialPurchaseService from SteadyStatePattern.services.design_service import DesignService from SteadyStatePattern.services.production_service import ProductionService from SteadyStatePattern.services.quality_service import QualityCheckService from SteadyStatePattern.services.package_service import PackageService from SteadyStatePattern.services.logistics_service import LogisticsService from SteadyStatePattern.services.finance_service import FinanceService from SteadyStatePattern.services.marketing_service import MarketingService from SteadyStatePattern.services.business_service import BusinessService from SteadyStatePattern.services.hr_service import HRAdminService from SteadyStatePattern.services.it_service import ITService class SteadyStateBll(object): """ """ def demo(self): """ :return: """ print("=" * 70) print("💎 珠宝行业企业级稳态系统 | Steady-State Pattern") print("📌 架构:严格分层 | 单一职责 | 可扩展 | 资源自动回收") print("=" * 70) # 1. 初始化服务管理器 manager = ServiceManager() # 2. 注册所有业务服务(可随时增删,完全扩展) manager.register(MaterialPurchaseService("原料采购核验")) manager.register(DesignService("设计制图")) manager.register(ProductionService("加工生产")) manager.register(QualityCheckService("质检")) manager.register(PackageService("包装")) manager.register(LogisticsService("物流")) manager.register(FinanceService("财务")) manager.register(MarketingService("营销推广")) manager.register(BusinessService("业务")) manager.register(HRAdminService("人事行政")) manager.register(ITService("IT支持")) try: # 3. 启动全部服务 manager.start_all() # 模拟长期运行(30秒) time.sleep(30) except KeyboardInterrupt: print("\n⚠️ 手动触发系统停止") finally: # 4. 安全停止所有服务 manager.stop_all() print("\n✅ 珠宝企业级稳态系统已安全关闭") print("=" * 70)

输出: