目录

一、什么是设计模式

二、模板设计模式-介绍

三、模板设计模式-最佳实践

1、开发需求

2、使用传统的方法来解决

3、优化-使用模板设计模式来解决


一、什么是设计模式

1)设计模式是在大量的实践中总结和理论化之后优选的代码结构、编程风格、以及解决问题的思考方式

2)设计模式就像经典的棋谱,不同的棋局,我们用不同的棋谱,免去我们再思考和摸索

二、模板设计模式-介绍

1、基本介绍

抽象类体现的就是一种模板模式的设计,抽象类作为多个子类的通用模板,子类在抽象类的基础上进行扩展、改造,但子类总体上会保留抽象类的行为方式

2、模板设计模式能解决的问题

1)当功能内部一部分实现是确定的,一部分是不确定的,这时可以把不确定的部分暴露出去,让子类去实现

2)编写一个抽象父类,父类提供了多个子类的通用方法,并把一个或多个方法留给其子类实现,就是一种模板模式

三、模板设计模式-最佳实践

1、开发需求

1)有多个类,完成不同的任务job

2)要求统计得到各自完成任务的时间

3)请编程实现

2、使用传统的方法来解决

import time

class AA:
    def job(self):
        # 得到开始的时间,秒数
        start=time.time()
        num=0
        for i in range(1,800001):
            num+=i
        # 得到结束的时间,秒数
        end=time.time()
        print("计算任务执行时间(秒)",(end-start))

class BB:
    def job(self):
        # 得到开始的时间,秒数
        start=time.time()
        num=1
        for i in range(1,90001):
            num-=i
        # 得到结束的时间,秒数
        end=time.time()
        print("计算任务执行时间(秒)",(end-start))

# 测试
if __name__=='__main__':
    aa=AA()
    aa.job()
    bb=BB()
    bb.job()

3、优化-使用模板设计模式来解决

设计一个抽象基类(Template),能完成如下功能:

1)编写方法cal_time(),可以计算某段代码的耗时时间

2)编写抽象方法job()

3)编写一个子类,继承抽象类Template,并实现job方法

4)完成测试

import time
from abc import ABC, abstractmethod

# 抽象类-模板类
class Template(ABC):
    @abstractmethod
    def job(self):
        pass
    def cal_time(self):
        # 得到开始的时间,秒数
        start = time.time()
        self.job()
        # 得到结束的时间,秒数
        end = time.time()
        print("计算任务执行时间(秒)", (end - start))

class AA(Template):
    def job(self):
        num=0
        for i in range(1,800001):
            num+=i

class BB(Template):
    def job(self):
        num=1
        for i in range(1,90001):
            num-=i

# 测试
if __name__=='__main__':
    aa=AA()
    aa.cal_time()
    bb=BB()
    bb.cal_time()

 

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部