Patrón de diseño patrón-comportamiento-patrón método

Patrón de método de plantilla

Visión general

  • Definir el esqueleto del algoritmo en la operación y retrasar algunos pasos para la implementación de la subclase, de modo que una subclase pueda redefinir los pasos específicos del algoritmo sin cambiar la estructura del algoritmo.

Objeto

  • Clase abstracta: define operaciones atómicas abstractas (operaciones de gancho); implementa un método de plantilla como el esqueleto del algoritmo
  • Clase específica: realizar operación atómica

Escena aplicable

  • Implementar la parte invariante del algoritmo de una sola vez
  • Los comportamientos comunes en cada subclase deben extraerse y concentrarse en una clase principal común para evitar la duplicación de código.
  • Extensión de subclase de control

ejemplo

"""
设计一个windows程序,桌面开始,绘制,结束

"""
from abc import ABCMeta, abstractmethod
import time

class Windows(metaclass=ABCMeta):
    @abstractmethod
    def start(self): # 原子/钩子操作
        pass
    
    @abstractmethod
    def draw(self):
        pass

    @abstractmethod
    def stop(self):
        pass

    def run(self): # 模板方法
        self.start()
        while True:
            try:
                self.draw()
                time.sleep(1)
            except KeyboardInterrupt:
                break
        self.stop()

class MyWin(Windows):
    def __init__(self, win_info):
        self.win_info = win_info

    def start(self):
        print("windows start...")
    
    def draw(self):
        print(f"draw: {self.win_info}")
    
    def stop(self):
        print("win stop...")

win = MyWin("win info")
win.run()

Supongo que te gusta

Origin blog.csdn.net/DALAOS/article/details/114222387
Recomendado
Clasificación