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

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

"""
模板方法模式
"""
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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值