一个抽象类定义了执行它的方法/模板和一些抽象的步骤,子类只需要实现这些步骤。
意图:定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。
Demo
"""模板方法"""from abc import ABCMeta, abstractmethodclass Game(metaclass=ABCMeta):@abstractmethoddef initialize(self):pass@abstractmethoddef start(self):pass@abstractmethoddef end(self):passdef play(self):self.initialize()self.start()self.end()class AGame(Game):def start(self):print(f"{self.__class__}: start")def initialize(self):print(f"{self.__class__}: initialize")def end(self):print(f"{self.__class__}: end")class BGame(Game):def start(self):print(f"{self.__class__}: start")def initialize(self):print(f"{self.__class__}: initialize")def end(self):print(f"{self.__class__}: end")if __name__ == '__main__':a_game = AGame()a_game.play()
