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

python: Template Method Pattern

 

# encoding: utf-8
# 版权所有 2026 ©涂聚文有限公司™ ®
# 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎
# 描述: Template Method Pattern
# 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/22 10:20
# User      : geovindu
# Product   : PyCharm
# Project   : pydesginpattern
# File      : JewelryMaker.py
# explain   : 学习from abc import ABC, abstractmethodclass JewelryMaker(ABC):"""抽象基类:定义珠宝制作的模板方法(算法骨架)"""def make_jewelry(self):"""模板方法:定义珠宝制作的整体流程(不允许子类重写,Python中用命名约定_开头或注释提醒)"""self.select_material()  # 步骤1:选材(通用)self.shape()            # 步骤2:塑形(可变,子类实现)self.polish()           # 步骤3:打磨(通用)self.inlay()            # 步骤4:镶嵌(可变,子类实现)self.quality_check()    # 步骤5:质检(通用)print(f"【成品】{self.get_jewelry_type()}制作完成!\n")def select_material(self):"""通用方法:所有珠宝都用相同的选材逻辑"""print("1. 选材:选用925银+天然锆石")def polish(self):"""通用方法:所有珠宝都用相同的打磨逻辑"""print("3. 打磨:精细抛光至镜面效果")def quality_check(self):"""通用方法:所有珠宝都用相同的质检逻辑"""print("5. 质检:检查表面光滑度、镶嵌牢固度")@abstractmethoddef shape(self):"""抽象方法:塑形(子类必须实现)"""pass@abstractmethoddef inlay(self):"""抽象方法:镶嵌(子类必须实现)"""pass@abstractmethoddef get_jewelry_type(self):"""辅助方法:获取珠宝类型(子类实现)"""pass

  

# encoding: utf-8
# 版权所有 2026 ©涂聚文有限公司™ ®
# 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎
# 描述: Template Method Pattern
# 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/22 10:23
# User      : geovindu
# Product   : PyCharm
# Project   : pydesginpattern
# File      : RingMaker.py
# explain   : 学习from TemplateMethodPattern.JewelryMaker import JewelryMakerclass RingMaker(JewelryMaker):"""子类1:戒指制作(实现可变步骤)"""def select_material(self):"""重写 选材"""print("1. 选材:将k999黄金锻造成环形,内径调整为28mm")def shape(self):"""塑形"""print("2. 塑形:将黄金料锻造成环形,内径调整为28mm")def inlay(self):"""镶嵌"""print("4. 镶嵌:在戒指中心镶嵌1颗5mm圆形锆石")def get_jewelry_type(self):""""""return "戒指"# encoding: utf-8
# 版权所有 2026 ©涂聚文有限公司™ ®
# 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎
# 描述: Template Method Pattern
# 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/22 10:30
# User      : geovindu
# Product   : PyCharm
# Project   : pydesginpattern
# File      : NecklaceMaker.py
# explain   : 学习from TemplateMethodPattern.JewelryMaker import JewelryMakerclass NecklaceMaker(JewelryMaker):"""子类2:项链制作(实现可变步骤)"""def shape(self):"""塑形"""print("2. 塑形:将银料拉成细链,编织成十字链样式,长度45cm")def inlay(self):"""镶嵌"""print("4. 镶嵌:在项链吊坠处镶嵌3颗2mm碎钻,链条间隔镶嵌小锆石")def get_jewelry_type(self):"""项链"""return "项链"

  

# encoding: utf-8
# 版权所有 2026 ©涂聚文有限公司™ ®
# 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎
# 描述:
# 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/22 10:33
# User      : geovindu
# Product   : PyCharm
# Project   : pydesginpattern
# File      : TemplateMethodBll.py
# explain   : 学习
from TemplateMethodPattern.RingMaker import RingMaker
from TemplateMethodPattern.NecklaceMaker import NecklaceMakerclass TemplateMethodBll(object):""""""def demo(self):""""""# 制作戒指ring_maker = RingMaker()print("=== 开始制作戒指 ===")ring_maker.make_jewelry()# 制作项链necklace_maker = NecklaceMaker()print("=== 开始制作项链 ===")necklace_maker.make_jewelry()

  

调用:

# encoding: utf-8
# 版权所有 2026 ©涂聚文有限公司™ ®
# 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎
# 描述:
# 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   : 学习
from bll.MementoBll import MementoBll
from bll.CommandBll import CommandBll
from bll.StateBll import StateBll
from bll.TemplateMethodBll import TemplateMethodBllif __name__ == '__main__':#实现备忘录模式(Memento Pattern)#mementobll= MementoBll()#mementobll.demo()#命令模式(Command Pattern)#commandBll= CommandBll()#commandBll.demo()# 状态模式 State Pattern#stateBll =StateBll()#stateBll.demo()# 模板方法模式 Template Method PatterntemplateMethodBll= TemplateMethodBll()templateMethodBll.demo()print('PyCharm')

  

输出:

6e0214dd292e720c72d1a73c9d36b345

 

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

相关文章:

  • Python基于Vue的教师科研管理系统 django flask pycharm
  • ComfyUI与CosyVoice集成实战:提升语音交互开发效率的完整方案
  • Python基于Vue的桂林旅游网站系统 django flask pycharm
  • 2026年2月成都旧房翻新品牌口碑TOP5,谁才是业主心中的不二之选 - 推荐官
  • Qwen2.5-1.5B效果展示:数学解题步骤推导+LaTeX公式生成实测
  • DCT-Net人像处理实战:证件照合规性检测+卡通化双模式切换设计
  • 企业级 Agent 开发中的 Token 成本归属与 API Key 管理:从工程规范到安全合规的完整实践指南
  • ChatGPT辅助单片机开发:从代码生成到调试优化实战指南
  • 2026年2月成都专业设计工作室口碑排行榜TOP10权威发布 - 推荐官
  • 国内大模型免费 API 每日额度全攻略:2026 年开发者白嫖指南(附实战代码与避坑手册)
  • 新手也能上手!标杆级的一键生成论文工具 —— 千笔·专业学术智能体
  • 为什么MySQL InnoDB选择B+tree作为索引的数据结构
  • Solid信号深度解析
  • AI魔法修图师入门指南:新手必知的5个英文指令示例
  • 干货合集:继续教育一键生成论文工具,千笔·专业学术智能体 VS 云笔AI
  • OpenClaw保姆级教程:2026年OpenClaw(Clawdbot)青云搭建快速
  • 深入解析CosyVoice在N卡上的推理速度优化策略
  • Python基于Vue的教务管理系统设计与实现 django flask pycharm
  • Vue 驱动的 Chatbot 前端页面开发:从架构设计到性能优化
  • 2026年新手零基础不需要技术阿里云上OpenClaw(Clawdbot)一键部署教程及快速接入QQ指南
  • 实战指南:使用CoolEdit高效播放PCM音频的工程实现与优化
  • Lychee Rerank MM在内容推荐系统中的实际应用
  • Chatbot Arena Leaderboard GitHub 集成实战:自动化评估与效率提升方案
  • Python基于Vue的 基于高性能计算中心的高性能集群共享平台django flask pycharm
  • 2026年新手零基础不需要技术阿里云上OpenClaw(Clawdbot)一键部署教程及快速接入企业微信指南
  • 深入解析CLI工具中‘cline does not support prompt caching‘问题的根源与解决方案
  • Base64编码/解码 在线工具分享
  • 2026年2月成都装饰公司口碑十大排行榜,业主信赖之选 - 推荐官
  • ChatGPT DAN模式实战:突破限制的高效对话技术解析
  • Python基于Vue的人事档案管理系统的设计与实现django flask pycharm