关闭

Python设计模式(二十三)【模板方法模式】

标签: python设计模式迭代
597人阅读 评论(0) 收藏 举报
分类:

过去属于死神,现在属于自己。

"""
模板方法模式
"""
ingredients = "垃圾邮件 鸡蛋 苹果"
line = '-' * 10

# 骨架
def iter_elements(getter, action):
    """模板的骨架-迭代项目"""
    for element in getter():
        action(element)
        print(line)


def rev_elements(getter, action):
    """模板的骨架-反序迭代项目"""
    for element in getter()[::-1]:
        action(element)
        print(line)


def get_list():
    return ingredients.split()


def get_lists():
    return [list(x) for x in ingredients.split()]


def print_item(item):
    print(item)


def reverse_item(item):
    print(item[::-1])


#创建模板
def make_template(skeleton, getter, action):
    """实例化一个模板方法,有 getter 和 action"""
    def template():
        skeleton(getter, action)
    return template

# 创建我们的模板函数
templates = [make_template(s, g, a)
             for g in (get_list, get_lists)
             for a in (print_item, reverse_item)
             for s in (iter_elements, rev_elements)]

# 执行他们
for template in templates:
    template()

结果:

垃圾邮件
----------
鸡蛋
----------
苹果
----------
苹果
----------
鸡蛋
----------
垃圾邮件
----------
件邮圾垃
----------
蛋鸡
----------
果苹
----------
果苹
----------
蛋鸡
----------
件邮圾垃
----------
['垃', '圾', '邮', '件']
----------
['鸡', '蛋']
----------
['苹', '果']
----------
['苹', '果']
----------
['鸡', '蛋']
----------
['垃', '圾', '邮', '件']
----------
['件', '邮', '圾', '垃']
----------
['蛋', '鸡']
----------
['果', '苹']
----------
['果', '苹']
----------
['蛋', '鸡']
----------
['件', '邮', '圾', '垃']
----------
0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:891164次
    • 积分:12969
    • 等级:
    • 排名:第1104名
    • 原创:307篇
    • 转载:438篇
    • 译文:56篇
    • 评论:93条
    博客专栏
    文章分类
    打赏
    如果你觉得我的文章对您有用,请随意打赏。 微信 支付宝