Python转载版
https://github.com/faif/python-patterns/blob/master/behavioral/template.py
#!/usr/bin/env python
"""
http://ginstrom.com/scribbles/2007/10/08/design-patterns-python-style/
An example of the Template pattern in Python
*TL;DR80
Defines the skeleton of an algorithm, deferring steps to subclasses.
"""
ingredients = "spam eggs apple"
line = '-' * 10
def iter_elements(getter, action):
"""Template skeleton that iterates items"""
for element in getter():
action(element)
print(line)
def rev_elements(getter, action):
"""Template skeleton that iterates items in reverse order"""
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):
"""Instantiate a template method with getter and 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()
Python转载版
手机扫一扫
移动阅读更方便
你可能感兴趣的文章