当前位置: 首页 > news >正文

python: Registry Pattern

项目结构:

image

 

# encoding: utf-8 
# 版权所有  2026 ©涂聚文有限公司™ ®
# 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎
# 描述:Registry 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/5/6 21:42 
# User      :  geovindu
# Product   : PyCharm
# Project   : pydesginpattern
# File      : base_registry.pyfrom typing import Dict, Type, Anyclass BaseRegistry:"""企业级注册器基类:所有模块继承"""_registry: Dict[str, Type[Any]] = {}@classmethoddef register(cls, name: str):"""装饰器注册:@XXX.register("name"):param name::return:"""def decorator(target_cls: Type[Any]) -> Type[Any]:if name in cls._registry:raise ValueError(f"注册项重复:{name}")cls._registry[name] = target_clsreturn target_clsreturn decorator@classmethoddef get(cls, name: str) -> Type[Any]:"""根据名称获取实例类:param name::return:"""if name not in cls._registry:raise KeyError(f"未注册的项:{name},可选:{list(cls._registry.keys())}")return cls._registry[name]@classmethoddef list_items(cls) -> list:"""获取所有注册项名称:return:"""return list(cls._registry.keys())@classmethoddef clear(cls):"""清空注册(测试用):return:"""cls._registry.clear()

  

# encoding: utf-8 
# 版权所有  2026 ©涂聚文有限公司™ ®
# 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎
# 描述:Registry 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/5/6 21:42 
# User      :  geovindu
# Product   : PyCharm
# Project   : pydesginpattern
# File      : jewelry.py
from dataclasses import dataclass@dataclass
class JewelryItem:"""珠宝实体:单一职责,仅存储数据"""name: strcategory: strmaterial: strcraft: strcertificate: strprice: float

  

# encoding: utf-8 
# 版权所有  2026 ©涂聚文有限公司™ ®
# 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎
# 描述:Registry 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/5/6 21:43 
# User      :  geovindu
# Product   : PyCharm
# Project   : pydesginpattern
# File      : category.pyfrom RegistryPattern.common.base_registry import BaseRegistryclass JewelryCategoryRegistry(BaseRegistry):""""""_registry = {}@JewelryCategoryRegistry.register("黄金")
class Gold:""""""def info(self):""":return:"""return "品类:黄金 - 保值硬通货"@JewelryCategoryRegistry.register("钻石")
class Diamond:""""""def info(self):""":return:"""return "品类:钻石 - 永恒璀璨"@JewelryCategoryRegistry.register("铂金")
class Platinum:""""""def info(self):""":return:"""return "品类:铂金 - 稀有纯白"@JewelryCategoryRegistry.register("珍珠")
class Pearl:""""""def info(self):""":return:"""return "品类:珍珠 - 优雅温润"@JewelryCategoryRegistry.register("翡翠")
class Jadeite:""""""def info(self):""":return:"""return "品类:翡翠 - 国玉瑰宝"# encoding: utf-8 
# 版权所有  2026 ©涂聚文有限公司™ ®
# 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎
# 描述:Registry 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/5/6 21:43 
# User      :  geovindu
# Product   : PyCharm
# Project   : pydesginpattern
# File      : craft.pyfrom RegistryPattern.common.base_registry import BaseRegistryclass CraftRegistry(BaseRegistry):""""""_registry = {}@CraftRegistry.register("抛光")
class Polishing:""""""def work(self):""":return:"""return "工艺:抛光 - 提升光泽"@CraftRegistry.register("镶嵌")
class Inlay:""""""def work(self):""":return:"""return "工艺:镶嵌 - 固定主石"@CraftRegistry.register("雕刻")
class Carving:""""""def work(self):""":return:"""return "工艺:雕刻 - 定制花纹"@CraftRegistry.register("电镀")
class Plating:""""""def work(self):""":return:"""return "工艺:电镀 - 抗氧化"# encoding: utf-8 
# 版权所有  2026 ©涂聚文有限公司™ ®
# 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎
# 描述:Registry 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/5/6 21:44 
# User      :  geovindu
# Product   : PyCharm
# Project   : pydesginpattern
# File      : coupon.pyfrom RegistryPattern.common.base_registry import BaseRegistryclass CouponRegistry(BaseRegistry):""""""_registry = {}@CouponRegistry.register("满减")
class FullCut:""""""def calc(self, amount):""":param amount::return:"""return f"满减后:{max(0, amount-500)}"@CouponRegistry.register("折扣")
class Discount:""""""def calc(self, amount):""":param amount::return:"""return f"折扣后:{amount*0.85:.2f}"@CouponRegistry.register("免工费")
class FreeLabor:""""""def calc(self, fee):""":param fee::return:"""return "工费全免"@CouponRegistry.register("新品")
class NewProduct:""""""def calc(self, amount):""":param amount::return:"""return f"新品价:{amount-200}"# encoding: utf-8 
# 版权所有  2026 ©涂聚文有限公司™ ®
# 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎
# 描述:Registry 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/5/6 21:44 
# User      :  geovindu
# Product   : PyCharm
# Project   : pydesginpattern
# File      : order_process.pyfrom RegistryPattern.common.base_registry import BaseRegistryclass OrderProcessRegistry(BaseRegistry):""""""_registry = {}@OrderProcessRegistry.register("下单")
class CreateOrder:""""""def run(self):""":return:"""return "流程:生成订单"@OrderProcessRegistry.register("质检")
class QualityCheck:""""""def run(self):""":return:"""return "流程:商品质检"@OrderProcessRegistry.register("发货")
class Delivery:""""""def run(self):""":return:"""return "流程:打包发货"@OrderProcessRegistry.register("售后")
class AfterSale:""""""def run(self):""":return:"""return "流程:售后维护"# encoding: utf-8 
# 版权所有  2026 ©涂聚文有限公司™ ®
# 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎
# 描述:Registry 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/5/6 21:44 
# User      :  geovindu
# Product   : PyCharm
# Project   : pydesginpattern
# File      : material.pyfrom RegistryPattern.common.base_registry import BaseRegistryclass MaterialRegistry(BaseRegistry):""""""_registry = {}@MaterialRegistry.register("18K金")
class Gold18K:""""""def detail(self):""":return:"""return "材质:18K金(75%)"@MaterialRegistry.register("24K金")
class Gold24K:""""""def detail(self):""":return:"""return "材质:24K金(99.9%)"@MaterialRegistry.register("PT950")
class PT950:""""""def detail(self):""":return:"""return "材质:PT950铂金"@MaterialRegistry.register("PT999")
class PT999:""""""def detail(self):""":return:"""return "材质:PT999高纯度铂金"# encoding: utf-8 
# 版权所有  2026 ©涂聚文有限公司™ ®
# 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎
# 描述:Registry 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/5/6 21:44 
# User      :  geovindu
# Product   : PyCharm
# Project   : pydesginpattern
# File      : certificate.pyfrom RegistryPattern.common.base_registry import BaseRegistryclass CertificateRegistry(BaseRegistry):""""""_registry = {}@CertificateRegistry.register("NGTC")
class NGTC:""""""def auth(self):""":return:"""return "证书:国检NGTC(权威)"@CertificateRegistry.register("GIC")
class GIC:""""""def auth(self):""":return:"""return "证书:地质大学GIC"@CertificateRegistry.register("IGI")
class IGI:""""""def auth(self):""":return:"""return "证书:国际IGI"# encoding: utf-8 
# 版权所有  2026 ©涂聚文有限公司™ ®
# 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎
# 描述:Registry 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/5/6 21:44 
# User      :  geovindu
# Product   : PyCharm
# Project   : pydesginpattern
# File      : payment.pyfrom RegistryPattern.common.base_registry import BaseRegistryclass PaymentRegistry(BaseRegistry):""""""_registry = {}@PaymentRegistry.register("微信")
class WechatPay:""""""def pay(self, amount):""":param amount::return:"""return f"微信支付 {amount} 成功"@PaymentRegistry.register("支付宝")
class Alipay:""""""def pay(self, amount):""":param amount::return:"""return f"支付宝支付 {amount} 成功"@PaymentRegistry.register("银行卡")
class BankCard:""""""def pay(self, amount):""":param amount::return:"""return f"银行卡支付 {amount} 成功"@PaymentRegistry.register("分期")
class Installment:""""""def pay(self, amount):""":param amount::return:"""return f"分期支付 {amount} 成功"# encoding: utf-8 
# 版权所有  2026 ©涂聚文有限公司™ ®
# 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎
# 描述:Registry 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/5/6 21:45 
# User      :  geovindu
# Product   : PyCharm
# Project   : pydesginpattern
# File      : role.pyfrom RegistryPattern.common.base_registry import BaseRegistryclass RoleRegistry(BaseRegistry):""""""_registry = {}@RoleRegistry.register("店长")
class Manager:""""""def perm(self):""":return:"""return "权限:店长-全店管理"@RoleRegistry.register("销售")
class Sales:""""""def perm(self):""":return:"""return "权限:销售-开单售卖"@RoleRegistry.register("库管")
class Keeper:""""""def perm(self):""":return:"""return "权限:库管-库存管理"@RoleRegistry.register("质检")
class Inspector:""""""def perm(self):""":return:"""return "权限:质检-鉴定审核"

  

# encoding: utf-8 
# 版权所有  2026 ©涂聚文有限公司™ ®
# 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎
# 描述:Registry 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/5/6 21:43 
# User      :  geovindu
# Product   : PyCharm
# Project   : pydesginpattern
# File      : jewelry_service.pyfrom RegistryPattern.registry.category import JewelryCategoryRegistry
from RegistryPattern.registry.craft import CraftRegistry
from RegistryPattern.registry.coupon import CouponRegistry
from RegistryPattern.registry.material import MaterialRegistry
from RegistryPattern.registry.certificate import CertificateRegistry
from RegistryPattern.registry.payment import PaymentRegistry
from RegistryPattern.registry.role import RoleRegistry
from RegistryPattern.registry.order_process import OrderProcessRegistryclass JewelryService:"""业务编排层:只负责组装逻辑,不存储数据"""@staticmethoddef show_all_categories():""":return:"""return [JewelryCategoryRegistry.get(n)().info() for n in JewelryCategoryRegistry.list_items()]@staticmethoddef calculate_price(coupon_type: str, amount: float):""":param coupon_type::param amount::return:"""return CouponRegistry.get(coupon_type)().calc(amount)@staticmethoddef do_payment(pay_type: str, amount: float):""":param pay_type::param amount::return:"""return PaymentRegistry.get(pay_type)().pay(amount)@staticmethoddef run_process(process: str):""":param process::return:"""return OrderProcessRegistry.get(process)().run()

  

# encoding: utf-8 
# 版权所有  2026 ©涂聚文有限公司™ ®
# 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎
# 描述:Registry 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/5/6 21:43 
# User      :  geovindu
# Product   : PyCharm
# Project   : pydesginpattern
# File      : system_api.py
from RegistryPattern.service.jewelry_service import JewelryServiceclass SystemAPI:"""接口层:对外提供稳定入口"""@staticmethoddef get_jewelry_category_list():""":return:"""return {"code": 200, "data": JewelryService.show_all_categories()}@staticmethoddef calculate_coupon(coupon: str, amount: float):""":param coupon::param amount::return:"""return {"code": 200, "result": JewelryService.calculate_price(coupon, amount)}@staticmethoddef pay_order(pay_type: str, amount: float):""":param pay_type::param amount::return:"""return {"code": 200, "msg": JewelryService.do_payment(pay_type, amount)}@staticmethoddef execute_process(process: str):""":param process::return:"""return {"code": 200, "step": JewelryService.run_process(process)}

  

调用:

# encoding: utf-8 
# 版权所有  2026 ©涂聚文有限公司™ ®
# 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎
# 描述:Registry 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/5/6 21:57 
# User      :  geovindu
# Product   : PyCharm
# Project   : pydesginpattern
# File      : RegistryBll.py
'''RegistryPattern/
├── common/                  # 通用基础模块
│   └── base_registry.py     # 注册模式基类
├── registry/                # 8大注册中心
│   ├── category.py          # 珠宝品类
│   ├── craft.py             # 工艺
│   ├── coupon.py            # 优惠券
│   ├── order_process.py     # 订单流程
│   ├── material.py          # 材质等级
│   ├── certificate.py       # 鉴定证书
│   ├── payment.py           # 支付方式
│   └── role.py              # 员工权限
├── entity/                  # 业务实体
│   └── jewelry.py           # 珠宝商品模型
├── service/                 # 业务服务
│   └── jewelry_service.py   # 核心业务编排
├── api/                     # 接口层
│   └── system_api.py        # 对外API
├── main.py                  # 启动入口
└── README.md                # 说明文档'''from RegistryPattern.api.system_api import SystemAPIclass RegistryBll(object):"""注册模式"""def demo(self):"""注册模式:return:"""print("=" * 60)print("企业级珠宝系统 - 注册模式 8大模块全运行")print("=" * 60)print("\n【1. 珠宝品类】")print(SystemAPI.get_jewelry_category_list())print("\n【2. 优惠计算】")print(SystemAPI.calculate_coupon("满减", 3000))print("\n【3. 支付】")print(SystemAPI.pay_order("微信", 5288))print("\n【4. 订单流程】")print(SystemAPI.execute_process("下单"))print("\n✅ 企业级架构运行成功!")

  

输出:

image

 

http://www.jsqmd.com/news/766327/

相关文章:

  • 观察 Taotoken 账单中心如何实现按 Token 计费与消费追溯
  • LinkSwift直链助手:免费解锁八大网盘极速下载的终极指南
  • 别再拍脑袋定权重了!用Python手把手教你实现熵权TOPSIS,搞定多指标决策难题
  • 为什么83%的MCP 2026早期部署团队在第47小时触发级联超时?——基于127个集群日志的智能调度阈值预警模型首次公开
  • 2026年广东地区的Nitronic60不锈钢厂商推荐名单 - 品牌2026
  • 如何在5分钟内免费搭建本地AI聊天界面:Ollama Web UI Lite终极指南
  • 3个步骤将Obsidian升级为智能知识助手:obsidian-copilot终极指南
  • 革命性React状态管理:Kea v3完整指南与实战教程
  • 2026年4月市场专业的石墨铅粉品牌推荐,金属粉末/金属铅粉/高纯石墨微粉/铅粉/高纯铅粉,石墨铅粉供应商有哪些 - 品牌推荐师
  • 视频转PPT神器:3分钟从视频中智能提取PPT内容
  • ChatTTS电子书有声化:批量生成高质量听书内容
  • 视觉AI测试:如何让机器“看懂”UI并自动验证?
  • 车载嵌入式开发者的紧急通知:VSCode 2026正式版已移除旧版Cortex-Debug兼容层(附5分钟热迁移补丁与离线适配包下载通道)
  • 用几十行代码搞定 Chat 接口透明转发:跨环境轻量级网关实战
  • NBTExplorer终极指南:快速掌握我的世界数据编辑神器
  • 2026年参考:三亚地区防水补漏服务提供商一览,瓷砖空鼓维修/房屋维修/楼房维修/墙砖空鼓修缮/防水,防水补漏公司选哪家 - 品牌推荐师
  • 模拟电路仿真算法理解 案例
  • wangEditor5渲染的HTML代码块没样式?手把手教你用Prism.js实现完美高亮
  • 明日方舟视觉资源宝库:2000+高清游戏素材的完整创作指南
  • CSS 创建
  • 【UNet 改进 | 注意机制篇】UNet引入CBAM注意力机制(ECCV 2018 ),空间与通道的完美结合,二次创新
  • 从一次“误删”事故复盘:我是如何用AIDE在CentOS 7上快速定位被篡改的/etc/passwd文件
  • 【独家首发】MCP 2026安全合规适配包(等保2.0+IEC 62443双认证预检项),仅限首批200家制造企业申领
  • 别慌!Rollup打包时弹出‘circular dependency’警告?这可能是Vite项目优化的一个信号
  • 数据稀缺下的AI训练终极指南:fastbook小样本学习实战
  • 武汉本地专业防水TOP5靠谱推荐:家里漏水不用愁,免费上门不求人。本地最新防水企业资讯:专业师傅持证上门,收费透明无隐藏收费,质保5-10年,售后有保障 - 企业资讯
  • 终极指南:DsHidMini如何让Windows电脑完美识别PS3控制器
  • 9 款 AI 写论文哪个好?2026 深度实测:真文献 + 真图表 + 全流程,虎贲等考 AI 完胜
  • 【多智能体控制】动态系统多智能体协同控制(含搜索跟踪 Kalman Filter 对目标进行预测与修正)【含Matlab源码 15408期】
  • vscode连接 服务器进行 RD/DL 研发