网站优化个人工作室微信订阅号做网站

张小明 2026/1/9 15:02:08
网站优化个人工作室,微信订阅号做网站,wordpress模板制作视频教程,上海建设工程网Python 中的模板方法模式#xff08;Template Method Pattern#xff09; 模板方法模式是一种行为型设计模式#xff0c;其核心目的是#xff1a; 定义一个操作中的算法骨架#xff0c;将一些步骤延迟到子类中实现。模板方法使得子类可以不改变算法结构的情况下#xff…Python 中的模板方法模式Template Method Pattern模板方法模式是一种行为型设计模式其核心目的是定义一个操作中的算法骨架将一些步骤延迟到子类中实现。模板方法使得子类可以不改变算法结构的情况下重新定义算法中的某些步骤。形象比喻就像做菜的“模板配方”——整体步骤固定准备材料 → 烹饪 → 装盘但具体食材和调味方式可以由不同菜系的厨师子类来实现。模板方法模式的优点代码复用算法骨架在父类中定义避免子类重复实现控制扩展只允许子类重写特定步骤钩子方法符合开闭原则新增新变体只需新增子类一致性保证所有子类遵循相同流程典型应用场景框架中的生命周期方法如 Flask 的请求处理、Django 的视图渲染数据处理管道读取 → 清洗 → 转换 → 保存测试框架setUp → runTest → tearDown游戏流程初始化 → 运行 → 结束报告生成收集数据 → 格式化 → 输出Python 实现示例数据处理管道fromabcimportABC,abstractmethodimporttime# 抽象类AbstractClass—— 定义模板方法classDataProcessor(ABC):# 模板方法定义算法骨架不可被子类重写defprocess(self):print( 开始数据处理流程 \n)self.extract()# 步骤1提取数据self.transform()# 步骤2转换数据self.validate()# 步骤3验证可选钩子self.load()# 步骤4加载数据print(\n 数据处理完成 \n)# 必须由子类实现的抽象方法Primitive Operationsabstractmethoddefextract(self):passabstractmethoddefload(self):pass# 可选步骤默认实现子类可选择重写deftransform(self):print(默认转换无操作)# 钩子方法Hook默认什么都不做子类可重写控制流程defvalidate(self):print(默认验证通过可被子类重写)returnTrue# 具体子类1处理 CSV 文件classCSVProcessor(DataProcessor):defextract(self):print(从 CSV 文件提取数据...)time.sleep(1)self.data[row1,row2,row3]deftransform(self):print(转换将数据转为大写)self.data[row.upper()forrowinself.data]defload(self):print(f加载到数据库{self.data})# 具体子类2处理 API 数据classAPIProcessor(DataProcessor):defextract(self):print(从 REST API 获取 JSON 数据...)time.sleep(1.5)self.data{users:[Alice,Bob]}deftransform(self):print(转换提取用户名字列表)self.dataself.data[users]defvalidate(self):iflen(self.data)0:print(验证失败数据为空)returnFalseprint(验证通过数据非空)returnTruedefload(self):print(f加载到缓存{self.data})# 客户端使用无需关心具体实现if__name____main__:print(处理 CSV 数据)csv_procCSVProcessor()csv_proc.process()print(\n*40\n)print(处理 API 数据)api_procAPIProcessor()api_proc.process()# 即使 validate 返回 False也会继续执行实际可加判断输出处理 CSV 数据 开始数据处理流程 从 CSV 文件提取数据... 转换将数据转为大写 默认验证通过可被子类重写 加载到数据库[ROW1, ROW2, ROW3] 数据处理完成 处理 API 数据 开始数据处理流程 从 REST API 获取 JSON 数据... 转换提取用户名字列表 验证通过数据非空 加载到缓存[Alice, Bob] 数据处理完成 Pythonic 简化版函数式模板不使用继承Python 支持高阶函数可以用函数组合实现“模板”deftemplate_process(extract_func,transform_funcNone,load_funcNone):defwrapper(data_source):print( 流程开始 )dataextract_func(data_source)iftransform_func:datatransform_func(data)else:print(跳过转换)print(默认验证通过)ifload_func:load_func(data)print( 流程结束 \n)returndatareturnwrapper# 定义具体步骤函数defextract_csv(source):print(f读取 CSV:{source})return[a,b,c]deftransform_upper(data):return[x.upper()forxindata]defload_db(data):print(f写入数据库:{data})# 使用process_csvtemplate_process(extract_csv,transform_upper,load_db)process_csv(sales.csv)模板方法模式结构总结角色说明AbstractClass抽象类定义模板方法 抽象/钩子方法template_method()算法骨架final不可重写primitive_operation()抽象方法必须子类实现hook()钩子方法默认空实现或默认行为ConcreteClass具体子类实现抽象方法可重写钩子模板方法 vs 其他模式对比模式目的扩展方式典型场景模板方法定义算法骨架子类实现步骤继承框架生命周期、处理流程策略算法整体可替换组合支付方式、排序算法工厂方法对象创建延迟到子类继承对象实例化建造者复杂对象分步构建组合对象配置Python 中的实用建议推荐使用继承实现当流程固定、步骤明确时避免过度使用Python 更倾向“组合优于继承”如果步骤完全可替换用策略模式更好钩子方法很实用用于控制流程分支如should_validate()返回 bool实际常见例子http.server.BaseHTTPRequestHandler的do_GET()、do_POST()unittest.TestCase的setUp()、tearDown()django.views.View的dispatch()方法进阶带流程控制的钩子classAdvancedProcessor(DataProcessor):defvalidate(self):print(严格验证中...)ifnotself.data:print(验证失败终止流程)raiseValueError(数据为空)defprocess(self):print(开始高级流程)self.extract()self.transform()ifnotself.validate():# 钩子控制是否继续print(验证未通过停止加载)returnself.load()模板方法模式是框架设计的核心模式之一它确保了流程的一致性同时给予子类足够的灵活性。如果你想看更多实战例子如 Web 框架请求处理模板、游戏主循环模板、报表生成模板或者如何与钩子结合实现条件分支欢迎继续问
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

网站开发需要干什么任县网站建设多少钱

摘要:在 AI 调用量激增的今天,为什么你的 LLM API 账单越来越贵?本文揭秘 AI 大模型 计费中不为人知的“汇率陷阱”与“隐形损耗”。通过深度解析 OpenRouter 与 n1n.ai 的定价策略,助你以此为鉴,实现 AI 大模型 成本降…

张小明 2026/1/5 12:52:37 网站建设

一般的域名可以做彩票网站吗建设厅里网站查不到外地施工单位

最近好几个群里都有人问我:“漫谈君,你桌面到底用啥?” 我实话实说:我现在所有机器,工作本、跳板机、家里的老破台式、甚至公司录课那几台工作站,全是 Ubuntu 的官方 Flavor,原版 Ubuntu?早两年就卸载干净了,一台都没留。 为啥啊?不是原版不好,是这三个衍生版实在…

张小明 2026/1/5 12:52:35 网站建设

河口区建设工程招标网站摄影网站知乎

5分钟快速上手:ComfyUI-Florence2视觉AI模型完整使用指南 【免费下载链接】ComfyUI-Florence2 Inference Microsoft Florence2 VLM 项目地址: https://gitcode.com/gh_mirrors/co/ComfyUI-Florence2 想要快速掌握微软Florence2视觉语言模型在ComfyUI中的应用…

张小明 2026/1/9 8:44:41 网站建设

专业做网站较好的公司知企业网站怎么打不开

深入理解TouchGFX在STM32中的帧缓冲布局:从原理到实战你有没有遇到过这样的问题——UI动画一动就卡顿,屏幕刷新时出现撕裂条纹,甚至刚画好的按钮瞬间“闪没”?如果你正在用STM32做图形界面开发,这些问题很可能不是代码…

张小明 2026/1/6 2:23:52 网站建设

开一个网站需要什么网站的实施方案

目录已开发项目效果实现截图开发技术核心代码参考示例1.建立用户稀疏矩阵,用于用户相似度计算【相似度矩阵】2.计算目标用户与其他用户的相似度系统测试总结源码文档获取/同行可拿货,招校园代理 :文章底部获取博主联系方式!已开发项目效果实现…

张小明 2026/1/6 2:23:50 网站建设

界面设计网站网站建设都需要哪些材料

在技术更新频率越来越快的今天,Java 常常被贴上“成熟”“稳定”“传统”的标签。在一些新技术浪潮中,它甚至被误解为“不够前沿”。但在真实的大型系统、核心业务平台、金融级与工业级系统中,Java 依然是最常见、最可靠的选择之一。 如果仅从…

张小明 2026/1/7 13:32:51 网站建设