模板模式:抽象出算法公共部分从而实现代码复用。
编写优秀代码的一个要素是避免冗余。在面向对象编程中,方法和函数是我们用来避免编写冗余代码的重要工具。
模板设计模式旨在消除代码重复。如果我们发现结构相近的(多个)算法中有重复代码,则可以把算法的不变(通用)部分留在一个模板方法/函数中,把易变(不同)的部分移到动作/钩子方法/函数中。
实际上这种模式在代码重构的时候是经常使用的 ,这里以一个例子来进行说明:
首先安装cowpy
(ps: 竟然有人编写这个):
pip install cowpy
代码如下:
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()
运行结果:
-- start of banner --
..........Happy coding..........
-- end of banner --
-- start of banner --
H!A!P!P!Y! !C!O!D!I!N!G
-- end of banner --
-- start of banner --
______________
< happy coding >
--------------
o
o
^__^ /
(**)\_______/ _________
(__)\ )=( ____|_ \_____
U ||----w | \ \ \_____ |
|| || || ||
-- end of banner --