设计模式-行为型-模板方法模式

模板方法模式

概述

  • 定义操作中的算法骨架,而将一些步骤延迟到子类实现,使得一个子类不改变算法的结构即可重新定义算法的特定步骤

对象

  • 抽象类:定义抽象的原子操作(钩子操作);实现一个模板方法作为算法骨架
  • 具体类:实现原子操作

适用场景

  • 一次性实现算法的不变部分
  • 各个子类中的公共行为应该被提取出来并集中到一个公共父类中避免代码重复
  • 控制子类扩展

例子

"""
设计一个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()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值