python: 枚举类型 enum
# encoding: utf-8 # 版权所有 2026 ©涂聚文有限公司™ ® # 许可信息查看言語成了邀功盡責的功臣還需要行爲每日來值班嗎 # 描述 # 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/3/4 21:47 # User : geovindu # Product : PyCharm # Project : pydesginpattern # File : CheckPatterns.py 创建型模式 Creational Patterns 抽象工厂Abstract Factory 生成器Builder 工厂方法Factory Method 原型Prototype 单例Singleton 结构型模式 Structural Patterns 适配器Adapter 桥接Bridge 组合Composite 装饰Decorator 外观Facade 享元Flyweight 代理Proxy 行为模式 Behavioral Patterns 责任链Chain of Responsibility 迭代器Iterator 备忘录Memento 状态State 模板方法Template Method 命令Command 中介者Mediator 观察者Observer 策略Strategy 访问者Visitor from enum import Enum, auto # 导入枚举相关模块 import bll.MementoBll import bll.CommandBll import bll.StateBll import bll.TemplateMethodBll import bll.VisitorBll import bll.StrategyBll import bll.ObserveBll import bll.MediatorBll import bll.IteratorBll import bll.ChainofResponsibilityBll import bll.ProxyBll # 枚举类定义管理所有设计模式示例 class DesignPattern(Enum): 设计模式枚举 - 每个枚举成员对应一个设计模式的示例函数 Memento auto() 备忘录模式 Command auto() # 命令模式 State auto() # 状态模式 TemplateMethodauto() # 模板方法模式 Visitorauto() # 访问者模式 Strategyauto() # 策略模式 Observeauto() # 观察者模式 Mediatorauto() # 中介者模式 Iteratorauto() # 迭代器模式 ChainofResponsibilityauto() # 责任链模式 Proxyauto() # 代理模式 Flyweightauto() 享元模式 def show_example(self): 枚举成员方法根据当前枚举值执行对应的示例函数 :return: pattern_handlers { DesignPattern.Memento:lambda:(bll.MementoBll.MementoBll().demo()), DesignPattern.Command:lambda:(bll.CommandBll.CommandBll().demo()), DesignPattern.State:lambda:(bll.StateBll.StateBll().demo()), DesignPattern.TemplateMethod:lambda:(bll.TemplateMethodBll.TemplateMethodBll().demo()), DesignPattern.Visitor:lambda:(bll.VisitorBll.VisitorBll().demo()), DesignPattern.Strategy:lambda:(bll.StrategyBll.StrategyBll().demo()), DesignPattern.Observe:lambda:(bll.ObserveBll.ObserveBll().demo()), DesignPattern.Mediator:lambda:(bll.MediatorBll.MediatorBll().demo()), DesignPattern.Iterator:lambda:(bll.IteratorBll.IteratorBll().demo()), DesignPattern.ChainofResponsibility:lambda:(bll.ChainofResponsibilityBll.ChainofResponsibilityBll().dudemo()), DesignPattern.Proxy:lambda:(bll.ProxyBll.ProxyBll().demo()), } # 获取当前枚举对应的示例函数并执行 handler pattern_handlers.get(self) if handler: print(f\n 展示【{self.name}{self._name_to_cn(self.name)}】示例 ) handler() else: print(f❌ 暂未实现{self.name}的示例) staticmethod def _name_to_cn(name: str) - str: 枚举名称转中文提升可读性 :param name: :return: cn_map { Memento: 备忘录模式, Command: 单例模式, State: 命令模式, TemplateMethod: 模板方法模式, Visitor: 模板方法模式, Strategy: 策略模式, Observe: 观察者模式, Mediator: 中介者模式, Iterator: 迭代器模式, ChainofResponsibility: 责任链模式 , Proxy: 代理模式, Flyweight: 享元模式, } return cn_map.get(name, name)调用# encoding: utf-8 # 版权所有 2026 ©涂聚文有限公司™ ® # 许可信息查看言語成了邀功盡責的功臣還需要行爲每日來值班嗎 # 描述 设计模式 Design Patterns # Author : geovindu,Geovin Du 涂聚文. # IDE : PyCharm 2023.1 python 3.11 # OS : windows 10 # database : mysql 9.0 sql server 2019, postgreSQL 17.0 oracle 21c Neo4j # Datetime : 2026/2/18 20:58 # User : geovindu # Product : PyCharm # Project : pydesginpattern # File : main.py # explain : 学习 import bll.CheckPatterns def select_design_pattern() - tuple[int, bll.CheckPatterns.DesignPattern | None]: 返回 (序列号, 选中的枚举对象)退出则返回 (0, None) :return: print(\n 方式3用户选择展示 ) print(可选设计模式输入0或q退出) for idx, pattern in enumerate(bll.CheckPatterns.DesignPattern, 1): print(f{idx}. {pattern._name_to_cn(pattern.name)}{pattern.name}) print(0. 退出) while True: user_input input(\n请输入序号选择要展示的设计模式输入0/q退出).strip() if user_input in (0, q, Q): print( 退出选择流程) return (0, None) try: choice int(user_input) if 1 choice len(bll.CheckPatterns.DesignPattern): selected_pattern list(bll.CheckPatterns.DesignPattern)[choice - 1] print(f✅ 你选择了序号{choice}对应{selected_pattern._name_to_cn(selected_pattern.name)}) return (choice, selected_pattern) # 返回(序列号, 枚举对象) else: print(f❌ 输入无效请输入1-{len(bll.CheckPatterns.DesignPattern)}之间的数字或0/q退出) except ValueError: print(❌ 输入无效请输入数字序号或0/q退出) def ask_continue() - bool: 询问用户是否继续选择返回True继续/False退出 while True: user_choice input(\n是否继续选择其他设计模式(y/n)).strip().lower() if user_choice y: return True elif user_choice n: print( 感谢使用程序结束) return False else: print(❌ 输入无效请输入 y继续或 n退出) if __name__ __main__: # 方式1用户输入选择展示交互版 print(\n 方式1用户选择展示 ) print(可选设计模式) for idx, pattern in enumerate( bll.CheckPatterns.DesignPattern, 1): print(f{idx}. {pattern._name_to_cn(pattern.name)}{pattern.name}) try: choice int(input(\n请输入序号选择要展示的设计模式)) selected_pattern list( bll.CheckPatterns.DesignPattern)[choice - 1] selected_pattern.show_example() except (ValueError, IndexError): print(❌ 输入无效请输入正确的序号) # 2 print( 设计模式示例展示程序) while True: # 1. 选择设计模式 selected_num, selected_pattern select_design_pattern() # 2. 判断是否直接退出输入0/q if selected_num 0: print( 程序结束) break # 3. 执行选中的示例 selected_pattern.show_example() print(f\n 本次选择的序列号是{selected_num}) # 4. 询问是否继续 if not ask_continue(): break # 用户选择不继续终止循环 print(hi,welcome geovindu.)输出

相关新闻

# 告别分类器!深入浅出Classifier-Free Guidance技术全景

# 告别分类器!深入浅出Classifier-Free Guidance技术全景

告别分类器!深入浅出Classifier-Free Guidance技术全景 引言 在AIGC浪潮席卷全球的今天,文生图、视频生成等应用已触手可及。你是否好奇,为何只需输入“一只戴着墨镜的柯基犬”,模型就能精准地生成相应图片,而不是其他…

2026/7/7 5:02:07 阅读更多 →
从原理到产业:一文读懂扩散模型图像生成的现在与未来

从原理到产业:一文读懂扩散模型图像生成的现在与未来

从原理到产业:一文读懂扩散模型图像生成的现在与未来 引言:AIGC浪潮的核心引擎 2024年,以Stable Diffusion、DALL-E 3、Midjourney为代表的AI图像生成技术已从实验室惊艳亮相,深度融入设计、娱乐、电商等千行百业。其背后的扩散…

2026/7/6 15:38:39 阅读更多 →
Asimov推出“Here Be Dragons”DIY人形机器人套件:1.5万美元打破开源门槛

Asimov推出“Here Be Dragons”DIY人形机器人套件:1.5万美元打破开源门槛

摘要:本文将解析这款DIY套件的核心亮点、开源理念、技术参数、软件策略,以及其背后的市场逻辑,为技术爱好者、研发人员、行业观察者呈现专业且易懂的深度解读。 引言:Asimov v1“Here Be Dragons”(此处有龙&#xff…

2026/7/5 3:05:32 阅读更多 →

最新新闻

远程协助软件推荐 远程协助软件哪个好

远程协助软件推荐 远程协助软件哪个好

日常帮亲友排查设备故障、异地处理工作难题,都需要靠谱的远程协助,便捷高效的远程协助能大幅降低跨设备、跨地域的操作成本。哪款远程协助软件体验比较呢?无界趣连2.0凭借轻量化设计与扎实的使用体验,成为个人日常远程协助的优选工…

2026/7/7 4:55:49 阅读更多 →
AD15 敷铜(Polygon Pour) 的完整操作,按步骤做即可,适合顶层/底层GND或电源敷铜。

AD15 敷铜(Polygon Pour) 的完整操作,按步骤做即可,适合顶层/底层GND或电源敷铜。

一、准备工作- 确保 板框(Board Shape) 已画好(机械层 Mechanical 1)。​- 布局、走线基本完成,DRC 先过一遍。​- 切换到要敷铜的层:底部层标签点 Top Layer(顶层) 或 Bottom Layer…

2026/7/7 4:55:49 阅读更多 →
NET 10:Oxigraph 的 FFI 桥接实践

NET 10:Oxigraph 的 FFI 桥接实践

架构概览┌──────────────────────────────────────────────────────────┐ │ .NET 应用层 │ │ ┌──────────┐ ┌────────────────…

2026/7/7 4:55:49 阅读更多 →
从静态限流到智能负载管理:Uber 如何治理大规模数据库过载

从静态限流到智能负载管理:Uber 如何治理大规模数据库过载

本文是对 How Uber Conquered Database Overload: The Journey from Static Rate-Limiting to Intelligent Load Management 的整理与翻译。 内容结构概览 本文会围绕 Uber 如何从静态限流走向智能负载管理展开,主要包括: 为什么 Uber 的数据库过载治理…

2026/7/7 4:47:48 阅读更多 →
Uber 如何用原生 gRPC 加速 OpenSearch:从 REST/JSON 瓶颈到搜索与写入性能优化

Uber 如何用原生 gRPC 加速 OpenSearch:从 REST/JSON 瓶颈到搜索与写入性能优化

本文是对 Accelerating Search and Inestion with High-Performance gRPC™ in OpenSearch™ 的整理与翻译。 内容结构概览 本文会围绕 Uber 如何在 OpenSearch 中引入原生 gRPC 传输层展开,主要包括: 为什么搜索系统在 Uber 几乎无处不在REST/JSON 在…

2026/7/7 4:47:48 阅读更多 →
CRM管理系统有哪些?2026年高性价比选型指南

CRM管理系统有哪些?2026年高性价比选型指南

很多企业在挑选 CRM 时,习惯先看每家的报价单,比完单价比折扣,最后选一个 "看起来最便宜" 的方案。但我们接触过的大量真实案例显示:约 60% 的企业在 CRM 上线后的第三年,实际支出会超出最初预算的 40% 以上…

2026/7/7 4:45:48 阅读更多 →

日新闻

鸿蒙新特性:图片画廊与轮播导航——构建沉浸式图片浏览体验

鸿蒙新特性:图片画廊与轮播导航——构建沉浸式图片浏览体验

图片浏览是移动应用中最高频的场景之一。从社交应用的照片流到电商平台的商品图集,从旅游应用的景点相册到摄影作品展示——用户对图片浏览的体验要求不断提高:流畅的切换动画、直观的缩略图导航、便捷的收藏操作、自动播放模式。HarmonyOS NEXT ArkUI 虽…

2026/7/7 0:05:16 阅读更多 →
24V DC-DC降压芯片PW2312B/PW2815,SOT23-6到SOP8-EP方案对比

24V DC-DC降压芯片PW2312B/PW2815,SOT23-6到SOP8-EP方案对比

24V稳压芯片完整选型指南 PW8600 PW75XX PW2815 PW2312B LDODC/DC全方案 一、24V稳压方案概述 24V直流电源在工业自动化、门禁系统、电梯控制、汽车电子、LED驱动、监控设备等场景中应用极广,是最常见的中压直流母线电压。要将24V母线稳定降压至下游MCU、传感器…

2026/7/7 0:05:16 阅读更多 →
RAG+知识图谱混合检索与Graph RAG核心对比

RAG+知识图谱混合检索与Graph RAG核心对比

做企业RAG落地的团队,往往容易卡在一容易踩坑的选型难题: 当需求单纯靠向量RAG搞不定、单纯靠知识图谱也搞不定,必须同时依赖「文本语义理解 实体关系推理」时,到底是做「向量图谱混合检索」就够了,还是必须上「Grap…

2026/7/7 0:07:19 阅读更多 →

周新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/6 8:11:50 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里,参与了关于混合后量子密码学的讨论,应付端点攻击找茬的人,还参与留言板讨论后,发现“威胁模型”对多数人仍是陌生概念,且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/6 8:11:52 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”:我理解的渗透测试到底是什么?每次看到新闻里说某个大公司的数据被“黑”了,或者某个网站被攻击导致服务瘫痪,你是不是和我一样,心里会冒出两个念头:一是“这黑客真厉害”&#x…

2026/7/6 6:52:56 阅读更多 →

月新闻