"""
模板方法模式
"""
ingredients = "垃圾邮件 鸡蛋 苹果"
line = '-' * 10# 骨架defiter_elements(getter, action):"""模板的骨架-迭代项目"""for element in getter():
action(element)
print(line)
defrev_elements(getter, action):"""模板的骨架-反序迭代项目"""for element in getter()[::-1]:
action(element)
print(line)
defget_list():return ingredients.split()
defget_lists():return [list(x) for x in ingredients.split()]
defprint_item(item):
print(item)
defreverse_item(item):
print(item[::-1])
#创建模板defmake_template(skeleton, getter, action):"""实例化一个模板方法,有 getter 和 action"""deftemplate():
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()