当前位置: 首页 > 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
添加奶和糖
"""

设计要点

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

总结

在这里插入图片描述

相关文章:

  • 力扣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 快递查询扩展实现:涵盖一号通、阿里云、腾讯云
  • 湖南电子科技网站建设/国外广告联盟平台
  • 中企动力做的网站经常打不开/厦门网
  • 国际货代做网站/行业关键词搜索量排名
  • 免费项目管理软件app/太原seo全网营销
  • 手机网站做桌面快捷方式/seo整站优化哪家好
  • 企业公示信息查询系统广西/seo网络培训机构