设计模式十七:模板模式
什么是模板模式
编写优秀代码的一个要素是避免冗余;
模式关注的是消除代码冗余;
无需改变算法结构就能重新定义一个算法的某些部分。
使用场景
发现结构相近的算法中有重复代码,则可以把算法的不变部分留在一个模板方法中,把易变的部分移动到动作/钩子方法中。
典型案例
工人的日常
所有工人都遵从或多或少相同的例行流程,但例行流程的某些特定部分区别又很大。
实例代码
from cowpy import cow # 艺术字符
def dots_style(msg):
msg = msg.capitalize()
msg = '.'*10 + msg +'.'*10
return msg
def admire_style(msg):
msg = msg.upper()
return '!'.join(msg)
def cow_style(msg):
msg = cow.milk_random_cow(msg)
return msg
def generate_banner(msg,style=dots_style): # 模板函数
print('-- start of banner --')
print(style(msg))
print('-- end of banner --\n\n')
def main():
msg = 'happy coding'
[generate_banner(msg,style) for style in (dots_style,admire_style,cow_style)]
if __name__ == "__main__":
main()