23种设计模式介绍(Python示例讲解)(39)
2023-04-30 来源:飞速影视
# 抽象类,定义算法的骨架class CoffeeMaker: def prepare(self): self.boil_water() self.brew() self.pour_in_cup() if self.customer_wants_condiments(): self.add_condiments() def boil_water(self): print("Boiling water") def pour_in_cup(self): print("Pouring into cup") # 抽象方法,需要子类实现 def brew(self): pass # 钩子方法,影响算法的执行 def customer_wants_condiments(self): return True # 具体方法,提供默认实现 def add_condiments(self): print("Adding sugar and milk") # 具体子类,实现抽象方法和钩子方法class Coffee(CoffeeMaker): def brew(self): print("Brewing coffee") def customer_wants_condiments(self): answer = input("Would you like sugar and milk with your coffee? (y/n)") return answer.lower().startswith("y") # 使用具体子类冲泡咖啡if __name__ == "__main__": coffee = Coffee() coffee.prepare()
代码解释:
在这个示例中,CoffeeMaker 类是一个抽象类,其中包含了 prepare 方法作为算法的骨架,以及 boil_water、brew、pour_in_cup、customer_wants_condiments 和 add_condiments 方法。其中,brew 方法为抽象方法,需要具体子类实现,而 customer_wants_condiments 方法为钩子方法,影响算法的执行。Coffee 类继承自 CoffeeMaker 类,并实现了 brew 和 customer_wants_condiments 方法,完成了算法的具体步骤。最后,通过 coffee.prepare() 方法调用算法的骨架,完成了冲泡咖啡的操作。
本站仅为学习交流之用,所有视频和图片均来自互联网收集而来,版权归原创者所有,本网站只提供web页面服务,并不提供资源存储,也不参与录制、上传
若本站收录的节目无意侵犯了贵司版权,请发邮件(我们会在3个工作日内删除侵权内容,谢谢。)
www.fs94.org-飞速影视 粤ICP备74369512号