python: Registry Pattern
项目结构:

珠宝行业实战示例
完整实现的 8 大模块(全部用注册模式)
珠宝品类注册(黄金 / 钻石 / 铂金 / 珍珠 / 翡翠)
珠宝工艺注册(抛光 / 镶嵌 / 雕刻 / 电镀)
优惠券注册(满减 / 折扣 / 免工费 / 新品)
订单流程注册(下单 / 质检 / 发货 / 售后)
材质等级注册(18K/24K/PT950/PT999)
鉴定证书注册(NGTC/GIC/IGI)
支付方式注册(微信 / 支付宝 / 银行卡 / 分期)
员工权限注册(店长 / 销售 / 库管 / 质检)
多品类
多材质
多证书
多营销
多支付
多权限
多流程
珠宝(5 个)
工艺(4 个)
优惠券(4 个)
材质(4 个)
证书(3 个)
支付(4 个)
角色(4 个)
订单流程(4 个)
# 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.py
from typing import Dict, Type, Any
class BaseRegistry:
"""
企业级注册器基类:所有模块继承
"""
_registry: Dict[str, Type[Any]] = {}
@classmethod
def 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_cls
return target_cls
return decorator
@classmethod
def 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]
@classmethod
def list_items(cls) -> list:
"""
获取所有注册项名称
:return:
"""
return list(cls._registry.keys())
@classmethod
def 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: str
category: str
material: str
craft: str
certificate: str
price: 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.py
from RegistryPattern.common.base_registry import BaseRegistry
class 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.py
from RegistryPattern.common.base_registry import BaseRegistry
class 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.py
from RegistryPattern.common.base_registry import BaseRegistry
class 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.py
from RegistryPattern.common.base_registry import BaseRegistry
class 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.py
from RegistryPattern.common.base_registry import BaseRegistry
class 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.py
from RegistryPattern.common.base_registry import BaseRegistry
class 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.py
from RegistryPattern.common.base_registry import BaseRegistry
class 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.py
from RegistryPattern.common.base_registry import BaseRegistry
class 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.py
from 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 OrderProcessRegistry
class JewelryService:
"""
业务编排层:只负责组装逻辑,不存储数据
"""
@staticmethod
def show_all_categories():
"""
:return:
"""
return [JewelryCategoryRegistry.get(n)().info() for n in JewelryCategoryRegistry.list_items()]
@staticmethod
def calculate_price(coupon_type: str, amount: float):
"""
:param coupon_type:
:param amount:
:return:
"""
return CouponRegistry.get(coupon_type)().calc(amount)
@staticmethod
def do_payment(pay_type: str, amount: float):
"""
:param pay_type:
:param amount:
:return:
"""
return PaymentRegistry.get(pay_type)().pay(amount)
@staticmethod
def 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 JewelryService
class SystemAPI:
"""
接口层:对外提供稳定入口
"""
@staticmethod
def get_jewelry_category_list():
"""
:return:
"""
return {"code": 200, "data": JewelryService.show_all_categories()}
@staticmethod
def calculate_coupon(coupon: str, amount: float):
"""
:param coupon:
:param amount:
:return:
"""
return {"code": 200, "result": JewelryService.calculate_price(coupon, amount)}
@staticmethod
def pay_order(pay_type: str, amount: float):
"""
:param pay_type:
:param amount:
:return:
"""
return {"code": 200, "msg": JewelryService.do_payment(pay_type, amount)}
@staticmethod
def 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 SystemAPI
class 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✅ 企业级架构运行成功!")
输出:

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