vlambda博客
学习文章列表

OOP设计模式Python实现--行为型模式之模板模式

作者简介

211工程院校贵州大学管理学院硕士研究生、互联网金融行业资深DevOps研发工程师. 曾在国内多家知名互联网公司 平安科技、微众银行、顺丰科技、魅族任职. 具有多年国内一线互联网公司自动化运维平台设计与开发经验。



OOP设计模式Python实现

行为型模式--模板模式

前言:

行为型模式是对在不同的对象之间划分责任和算法的抽象化;在系统运行时,对象并不是孤立的而是通过相互通信与协作完成复杂功能的,也就是一个对象在运行时也将影响到其他对象的运行。模板模式定义了一个抽象类作为操作的方法框架,将一些具体的行为放到了具有相同方法和逻辑的子类中实现,子类可以根据需要重写方法,但调用将以抽象类中定义的方式进行;这就使得子类可以在不改变算法的结构的情况下重新定义该算法的某些特定步骤;模版方法提供了一个代码复用的平台,当代码中有一系列步骤需要执行,且这些步骤从更高层次看过程是相同的,只是有些具体步骤的实现是不同的,此时就可以用模版模式进行代码开发。

 1 

白话模板模式

生活中解锁共享单车的场景可以用模板模式更好的实现,已知想要租用共享单车需要经过解锁、骑车、支付这三个步骤,同时又知解锁的方式有两种分别是扫码解锁和密码解锁。

 2 

示例代码(未使用模板模式)

OOP设计模式Python实现--行为型模式之模板模式

输出:

OOP设计模式Python实现--行为型模式之模板模式

以上代码中,通过扫码解锁和通过密码解锁使用单车都调用了use方法,类scanbike和类codebike中的use方法中的代码是重复的,这是无法接受的,所以可以通过应用模板模式对代码进行优化。模板方法模式涉及到的角色有如下:

  • 抽象模板角色:定义一组基本方法供子类实现,定义并实现组合了基本方法的模板方法。

  • 具体模板角色:实现抽象模板角色定义的基本方法

 3 

示例代码(应用模板模式)

OOP设计模式Python实现--行为型模式之模板模式

输出:

OOP设计模式Python实现--行为型模式之模板模式

应用模板模式可带来以下几个好处:

  • 可变的部分能充分扩展, 不变的部分可充分封装

  • 提取公共代码,减少冗余代码便于维护

  • 具体过程可以定制、总体流程方便掌控

 4 

结束语

如果本文可以对您的工作学习带来帮助,请扫描左侧赞赏码以资鼓励作者;文章勘误请扫描右侧二维码联系作者。