- 1、本文档共25页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
PAGE1
PAGE1
设计模式–模板方法模式:定义算法的骨架
1模板方法模式的原理与应用
1.11原理介绍
模板方法模式(TemplateMethodPattern)是一种行为设计模式,它允许你在超类中定义算法的骨架,而将某些步骤的实现延迟到子类中。这种模式让子类可以重写算法的某些步骤,而无需改变算法的结构。在模板方法模式中,算法的步骤由超类定义,但具体的实现细节则留给子类去完成。这样,父类可以控制算法的整体流程,而子类可以提供特定的实现。
1.22模式结构
模板方法模式涉及到以下几个主要角色:
抽象类(AbstractClass):定义了算法的骨架,声明了抽象方法和模板方法。
具体类(ConcreteClass):实现了抽象类中定义的抽象方法,提供算法的具体步骤。
客户端(Client):调用模板方法,执行算法。
1.33示例:制作茶和咖啡
假设我们需要设计一个系统,用于自动化制作茶和咖啡。虽然制作茶和咖啡的基本步骤相似(如加热、冲泡、倒入杯中等),但具体的操作却有所不同。模板方法模式可以很好地解决这个问题。
1.3.13.1抽象类定义
classBeverage:
def__init__(self):
self.description=未知的饮料
defget_description(self):
returnself.description
defprepare_recipe(self):
self.boil_water()
self.brew()
self.pour_in_cup()
self.add_condiments()
defboil_water(self):
print(烧水)
defpour_in_cup(self):
print(倒入杯中)
defbrew(self):
raiseNotImplementedError(子类必须实现该方法)
defadd_condiments(self):
raiseNotImplementedError(子类必须实现该方法)
defcustomer_wants_condiments(self):
answer=input(您需要调料吗?(Y/N))
ifanswerin(y,Y):
returnTrue
returnFalse
在这个抽象类Beverage中,我们定义了一个算法的骨架,即prepare_recipe方法。它包含了制作饮品的通用步骤,但具体的brew和add_condiments方法需要由子类来实现。
1.3.23.2具体类实现
classTea(Beverage):
def__init__(self):
super().__init__()
self.description=茶
defbrew(self):
print(冲泡茶叶)
defadd_condiments(self):
ifself.customer_wants_condiments():
print(加入柠檬)
classCoffee(Beverage):
def__init__(self):
super().__init__()
self.description=咖啡
defbrew(self):
print(冲泡咖啡)
defadd_condiments(self):
ifself.customer_wants_condiments():
print(加入糖和奶)
Tea和Coffee类分别实现了Beverage类中的brew和add_condiments方法,提供了不同的实现细节。
1.3.33.3客户端使用
defmain():
tea=Tea()
coffee=Coffee()
print(tea.get_description())
tea.prepare_recipe()
print(\n)
print(coffee.get_description())
您可能关注的文档
- UI设计师-UI设计模式与组件库-Ant Design_状态与进度组件:进度条与骨架屏.docx
- UI设计师-UI设计模式与组件库-Ant Design_自定义主题与样式.docx
- UI设计师-UI设计模式与组件库-Apple Human Interface Guidelines_Apple Human Interface Guidelinesall.docx
- UI设计师-UI设计模式与组件库-Apple Human Interface Guidelines_测试与优化用户界面.docx
- UI设计师-UI设计模式与组件库-Apple Human Interface Guidelines_导航设计与模式.docx
- UI设计师-UI设计模式与组件库-Apple Human Interface Guidelines_多语言与地区适配.docx
- UI设计师-UI设计模式与组件库-Apple Human Interface Guidelines_反馈与过渡动画.docx
- UI设计师-UI设计模式与组件库-Apple Human Interface Guidelines_可访问性设计.docx
- UI设计师-UI设计模式与组件库-Apple Human Interface Guidelines_控制与交互元素设计.docx
- UI设计师-UI设计模式与组件库-Apple Human Interface Guidelines_视觉设计基础.docx
文档评论(0)