设计模式之模板方法模式

模板方法模式

  • 内容

    定义一个操作中的算法中的骨架,而将一些步奏延迟到子类中,模板方法可以使得一个子类不改变一个算法的结构即可重定义该算法的某些特定步奏

  • 角色

    1. 抽象类

      定义抽象原子操作(钩子操作),实现一个模板方法做算法骨架

    2. 具体类

      实现原子操作

  • 使用场景

    1. 一次性实现一个算法不变得部分

    2. 子类中的工共方法全部提取出来,并集中到一个工共父类中,以避免代码重复

    3. 控制字类扩展

  • 代码实例

    from abc import ABCMeta,abstractmethod
    from time import sleep
    
    class Win(metaclass=ABCMeta):
    	"""docstring for Win"""
    	@abstractmethod
    	def start(self):
    		pass
    
    	@abstractmethod
    	def stop(self):
    		pass
    
    
    	@abstractmethod
    	def paint(self):
    		pass
    
    	def run(self):
    		self.start()
    		while True:
    			try:
    				self.paint()
    				sleep(1)
    			except KeyboardInterrupt:
    				break
    				self.stop()
    
    
    class  MyWin(Win):
    	"""docstring for  MyWin"""
    	def __init__(self,msg):
    		self.msg = msg
    
    	def start(self):
    		print("win程序正在运行",self.msg)
    	
    	def paint(self):
    		print('程序正在切换')
    	
    	def stop(self):
    		print("程序已经停止了")
    
    MyWin('你猜啊').run()
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值