設計模式十七:模板模式
什麼是模板模式
編寫優秀代碼的一個要素是避免冗餘;
模式關注的是消除代碼冗餘;
無需改變算法結構就能重新定義一個算法的某些部分。
使用場景
發現結構相近的算法中有重複代碼,則可以把算法的不變部分留在一個模板方法中,把易變的部分移動到動作/鉤子方法中。
典型案例
工人的日常
所有工人都遵從或多或少相同的例行流程,但例行流程的某些特定部分區別又很大。
實例代碼
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()