Python设计模式:模板模式

设计模式十七:模板模式

什么是模板模式

编写优秀代码的一个要素是避免冗余;
模式关注的是消除代码冗余;
无需改变算法结构就能重新定义一个算法的某些部分。

使用场景

发现结构相近的算法中有重复代码,则可以把算法的不变部分留在一个模板方法中,把易变的部分移动到动作/钩子方法中。

典型案例

工人的日常
所有工人都遵从或多或少相同的例行流程,但例行流程的某些特定部分区别又很大。

实例代码

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()

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章