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

基于Python学习《Head First设计模式》第八章 模板方法模式

项目:星巴兹咖啡和茶

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

代码实现

在这里插入图片描述

from abc import abstractmethodclass CaffeineBeverage:"""咖啡饮料"""def prepare_recipe(self):self.boil_water()self.brew()self.pour_in_cup()self.add_condiments()def boil_water(self):print('将水煮沸')@abstractmethoddef brew(self):print('浸泡或冲泡')def pour_in_cup(self):print('倒入杯子')@abstractmethoddef add_condiments(self):print('添加调料')class Tea(CaffeineBeverage):def brew(self):print('浸泡茶叶')def add_condiments(self):print('添加柠檬')class Coffee(CaffeineBeverage):def brew(self):print('冲泡咖啡')def add_condiments(self):print('添加奶和糖')if __name__ == '__main__':tea = Tea()tea.prepare_recipe()print()coffee = Coffee()coffee.prepare_recipe()"""运行结果:
将水煮沸
浸泡茶叶
倒入杯子
添加柠檬将水煮沸
冲泡咖啡
倒入杯子
添加奶和糖
"""

认识模板方法

在这里插入图片描述
在这里插入图片描述

模板方法定义

在这里插入图片描述
在这里插入图片描述

挂钩模板方法

在这里插入图片描述
在这里插入图片描述

代码实现钩子模板方法

在这里插入图片描述


from abc import abstractmethodclass CaffeineBeverageWithHook:"""咖啡饮料"""def prepare_recipe(self):self.boil_water()self.brew()self.pour_in_cup()if self.customer_wants_condiments():self.add_condiments()def boil_water(self):print('将水煮沸')@abstractmethoddef brew(self):print('浸泡或冲泡')def pour_in_cup(self):print('倒入杯子')@abstractmethoddef add_condiments(self):print('添加调料')def customer_wants_condiments(self):return Trueclass TeaHook(CaffeineBeverageWithHook):def brew(self):print('浸泡茶叶')def add_condiments(self):print('添加柠檬')class CoffeeWithHook(CaffeineBeverageWithHook):def brew(self):print('冲泡咖啡')def add_condiments(self):print('添加奶和糖')def get_user_input(self):answer = input('Would you like milk and sugar with your coffe? (y/n)')return 'no' if not answer else answerdef customer_wants_condiments(self):answer = self.get_user_input()if answer.lower().startswith('y'):return Truereturn Falseif __name__ == '__main__':tea_hook = TeaHook()coffee_hook = CoffeeWithHook()print('制作茶...')tea_hook.prepare_recipe()print('\n制作咖啡...')coffee_hook.prepare_recipe()"""运行结果:
制作茶...
将水煮沸
浸泡茶叶
倒入杯子
添加柠檬制作咖啡...
将水煮沸
冲泡咖啡
倒入杯子
Would you like milk and sugar with your coffe? (y/n)y
添加奶和糖
"""

设计要点

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

总结

在这里插入图片描述

http://www.dtcms.com/a/236833.html

相关文章:

  • 力扣HOT100之二分查找:33. 搜索旋转排序数组
  • 热电厂中控室无线集控:高清视频监测+PLC远程操控
  • 调试器基本原理
  • 高精度算法--四则运算模板(附例题)
  • 心理咨询技能竞赛流程方案
  • day 47
  • 知识改变命运?如何有规划的学好计算机专业?
  • Codeforces Round 509 (Div. 2) C. Coffee Break
  • 【AI论文】反思、重试、奖励:通过强化学习实现大型语言模型的自我提升
  • Go 标准库 encoding/gob 快速上手
  • Python项目中添加环境配置文件
  • 【Elasticsearch】映射:Join 类型、Flattened 类型、多表关联设计
  • Python 函数全攻略:函数进阶(生成器、闭包、内置函数、装饰器、推导式)
  • 柯尼卡美能达Konica Minolta bizhub 205i打印机信息
  • 《机器学习》(周志华)第一章 绪论
  • 使用Python和Scikit-Learn实现机器学习模型调优
  • 机器学习-经典分类模型
  • 计算机视觉——相机标定
  • 深入解析HarmonyOS5 UIAbility组件:从核心架构到实战应用
  • CRMEB 中 PHP 快递查询扩展实现:涵盖一号通、阿里云、腾讯云
  • pcie 日常问答0604
  • Spring Cloud 多机部署与负载均衡实战详解
  • 【storage】
  • Android开发 系统签名jks制作和问题汇总
  • python 第二章
  • 浅说跟单软件的原理
  • python如何统计图片的颜色分布
  • GenSpark vs Manus实测对比:文献综述与学术PPT,哪家强?
  • Mysql-定时删除数据库中的验证码
  • ADB识别手机系统弹授权框-如何处理多重弹框叠加和重叠问题