定义:
模板方法模型是一种行为设计模型。模板方法是一个定义在父类别的方法,在模板方法中会呼叫多个定义在父类别的其他方法,而这些方法有可能只是抽象方法并没有实作,模板方法仅决定这些抽象方法的执行顺序,这些抽象方法的实作由子类别负责,并且子类别不允许覆写模板方法。
注意点:1,父类定义模板方法某些操作顺序。
2,子类不能覆盖父类模板方法
把具体的实现放在子类中实现
import abc
class Game(metaclass=abc.ABCMeta):
def __init__(self):
pass
def playtime(self):
self.initial_game()
self.play_game()
self.end_game()
@abc.abstractmethod
def initial_game(self):
pass
@abc.abstractmethod
def play_game(self):
pass
@abc.abstractmethod
def end_game(self):
pass
@staticmethod
def set_game_name(name: str):
print(name)
class KingGlory(Game):
def initial_game(self):
print("王者荣耀游戏开")
def play_game(self):
print("王者荣耀游戏进行中")
def end_game(self):
print("王者游戏结束")
if __name__ == "__main__":
king = KingGlory()
king.playtime()
参考:github
def get_text():
return "plain-text"
def get_pdf():
return "pdf"
def get_csv():
return "csv"
def convert_to_text(data):
print("[CONVERT]")
return f"{data} as text"
def saver():
print("[SAVE]")
def template_function(getter, converter=False, to_save=False):
data = getter()
print(f"Got `{data}`")
if len(data) <= 3 and converter:
data = converter(data)
else:
print("Skip conversion")
if to_save:
saver()
print(f"`{data}` was processed")
if __name__=="__main__":
template_function(get_pdf,converter=convert_to_text,to_save=True)