最佳实践-模板设计模式

server/2024/12/22 19:42:09/

目录

一、什么是设计模式

二、模板设计模式-介绍

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

1、开发需求

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

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


一、什么是设计模式

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

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

二、模板设计模式-介绍

1、基本介绍

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

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

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

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

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

1、开发需求

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

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

3)请编程实现

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

python">import timeclass AA:def job(self):# 得到开始的时间,秒数start=time.time()num=0for i in range(1,800001):num+=i# 得到结束的时间,秒数end=time.time()print("计算任务执行时间(秒)",(end-start))class BB:def job(self):# 得到开始的时间,秒数start=time.time()num=1for 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)完成测试

python">import time
from abc import ABC, abstractmethod# 抽象类-模板类
class Template(ABC):@abstractmethoddef job(self):passdef cal_time(self):# 得到开始的时间,秒数start = time.time()self.job()# 得到结束的时间,秒数end = time.time()print("计算任务执行时间(秒)", (end - start))class AA(Template):def job(self):num=0for i in range(1,800001):num+=iclass BB(Template):def job(self):num=1for i in range(1,90001):num-=i# 测试
if __name__=='__main__':aa=AA()aa.cal_time()bb=BB()bb.cal_time()

 


http://www.ppmy.cn/server/114033.html

相关文章

Maven 快照(SNAPSHOT)

Maven 快照(SNAPSHOT) 1. 引言 在Java项目开发中,Maven是一个广泛使用的构建工具,它通过自动化构建过程来简化项目管理和依赖管理。Maven的一个核心特性是它的依赖管理机制,它允许开发者轻松地管理项目所依赖的库。在…

perl的学习记录——仿真regression

1 记录的背景 之前只知道有这个强大语言的存在,但一直侥幸自己应该不会用到它,所以一直没有开始学习。然而人生这么长,怎就确定自己不会用到呢? 这次要搭建一个可以自动跑完所有case并且打印每个case的pass信息到指定的文件中。…

【C++】std::forward_list

std::forward_list: std::forward_list 是 C 标准库中的一个单向链表容器。与 std::list 相比,std::forward_list 只允许单向遍历,即只能从前往后访问元素。它的实现比 std::list 更轻量,因此在内存和性能方面通常更优,但缺少双向…

基于YOLOv5的积水检测模型训练:从数据到模型的全面解析

之前给大家带来了Yololov5Pyqt5Opencv 实时城市积水报警系统, 详见: Yololov5Pyqt5Opencv 实时城市积水报警系统_yolo opencv pyqt5-CSDN博客 今天详细解析一下积水检测模型训练部分的内容 在积水检测项目中,实时性和准确性是至关重要的。…

python基础语法十一-赋值、浅拷贝、深拷贝

书接上回: python基础语法一-基本数据类型 python基础语法二-多维数据类型 python基础语法三-类 python基础语法四-数据可视化 python基础语法五-函数 python基础语法六-正则匹配 python基础语法七-openpyxl操作Excel python基础语法八-异常 python基础语法…

跟李沐学AI:语言模型

语言模型定义 假设在给定长度为T的文本序列中的词元依次为,可被人做文本序列在时间步t处的观测或标签。在给定这样的文本序列是,语言模型的目标是估计序列的联合概率。 一个理想的与语言模型能够在一次抽取一个词元的情况下基于模型本身生成自然文本。…

系统架构师-ERP+集成

ERP 集成平台end:就懒得画新的页

卡西莫多的诗文集2022-2024.9月6-校庆国庆专版定版

通过网盘分享的文件:卡西莫多的诗文集2022-2024.9月6-A5-校庆国庆专版-定版.pdf 链接: https://pan.baidu.com/s/1cpFK5k1baGXbSGxY30GL_A?pwdjgnt 提取码: jgnt 卡西莫多的诗文集2022-2024.9月6-校庆国庆专版,又稍作修改并勘误了一些错字,…