一个抽象类定义了执行它的方法/模板和一些抽象的步骤,子类只需要实现这些步骤。
意图:定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。
Demo
"""
模板方法
"""
from abc import ABCMeta, abstractmethod
class Game(metaclass=ABCMeta):
@abstractmethod
def initialize(self):
pass
@abstractmethod
def start(self):
pass
@abstractmethod
def end(self):
pass
def 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()