首页 > 其他分享 >设计模式之模板方法

设计模式之模板方法

时间:2024-01-23 19:46:24浏览次数:28  
标签:组装 算法 显卡 设计模式 方法 模板

1. 定义

定义了一个算法的框架,并允许子类重写其中的某些步骤,而不改变算法的结构

2. 口语化表述

模板方法其实在日常生活中已经很常见,所谓模板方法,就是事先约定好一些事情,后续做时再慢慢实现或者修改,比如组装电脑

假设现在需要组装一台台式电脑,一开始计划使用3090显卡,后来根据实际需要,选择了4090显卡,为啥可以替换呢,因为组装电脑前约定了要使用显卡,主板上的显卡插槽也是一样的,所以可以根据后来实际需要选择显卡,其他配件也类似

事先约定好,后续做时再慢慢实现或者修改,这就是模板方法模式

下面的描述会沿用这个上述这个场景

3. 源码示例

模板方法在Java中使用广泛,比如连接数据库的JDBC,数据库有很多种,并且还可能有新的出现

JDK在设计JDBC时,规定了核心编程对象,在处理具体数据库时,就会有具体的实现,大致示意图如下:

img

4. 总结

4.1 设计优点

  • 单一职责原则

    可将重复代码提取到一个超类中

  • 开闭原则

    无需对上下文进行修改就能够引入新的子类

4.2 适用场景

  • 希望客户端扩展某个特定算法步骤,而不是整个算法或其结构时

  • 多个类的算法除一些细微不同之外几乎完全一样时

    将公共行为抽取为一个父类进行复用

5. 参考资料

[1] 模板方法设计模式 (refactoringguru.cn)

[2] 浅谈Spring JdbcTemplate模板方法设计模式 - 简书 (jianshu.com)

标签:组装,算法,显卡,设计模式,方法,模板
From: https://www.cnblogs.com/jiujiubashiyi/p/17975258

相关文章

  • kettle报错ldconfig: command not found解决方法
    一、前言之前测试服务器有一个kettle是正常的;后来让换服务器,把kettle迁移后,就发现了问题。1.手动执行以下命令是可以运行kettle的:LOG_DATE=`date+%Y%m%d`LOG_PATH=/home/admin/kettle/logs/mykettle_${LOG_DATE}.logKJB_PATH=/home/admin/kettle/kjb/home/admin/kettle/dat......
  • 题小聪怎么查看试题答案,掌握一个小方法就可以了
    以下是我的一个搜题展示案例找到题小聪,然后关注,然后发送试题的题目,最后就可以看到答案了问题:乒乓球比赛决胜局中一方先得()分时,双方应换方位参考答案如图所示......
  • 看起不起眼,却能一天加100人的引流方法
    如果正在创业的你因为缺客源而导致生意停滞不前那么接下来,我分享的你要认真听了,这五种引流方法一定能帮到你。——❶截流法就是去别的博主下面截取他的流量,从而将他的粉丝吸引到你的私域。这个方法看似不起眼,做的人却很多不仅能吸引大量人群,还很精-准。比如你吸引创业粉,就去搜索创......
  • [转帖]Docker最佳实践:5个方法精简镜像
    https://juejin.cn/post/6844903880526921741  精简Docker镜像的好处很多,不仅可以节省存储空间和带宽,还能减少安全隐患。优化镜像大小的手段多种多样,因服务所使用的基础开发语言不同而有差异。本文将介绍精简Docker镜像的几种通用方法。精简Docker镜像大小的必要性Doc......
  • EasyCVR启动失败报错“Local Machine Check Error”的解决方法
    有用户反馈EasyCVR智能边缘网关启动失败,导致服务无法使用,今天我们来分析一下问题的排查与解决方法。1)查看报错日志,如下:2)报错为“LocalMachineCheckError!本地机器检查错误!”,检查配置文件是否因为hardware_version字段影响了服务启动;3)将该字段参数进行注释,然后再次启动EasyCVR查看......
  • 设备通过GB28181注册到EasyCVR,平台看不到设备信息的排查方法汇总
    智慧安防平台EasyCVR平台支持设备通过4G、5G、WIFI、有线等方式进行视频流的接入与传输,支持的接入协议包括:国标GB28181、RTSP/Onvif、RTMP,以及厂家的私有协议与SDK。经常有用户咨询我们,将海康摄像头通过GB/T28181协议接到EasyCVR平台,但是在平台上为什么看不到设备?今天我们就来总结......
  • 在无公网IP环境下实现VS Code远程开发的方法
    哈喽大家好,我是咕噜美乐蒂,很高兴又见面啦!随着云计算和远程协作的普及,越来越多的开发者选择使用VSCode进行远程开发。然而,有时我们会发现自己处于一个没有公网IP的网络环境,这可能会导致无法直接访问VSCode的远程开发功能。在本文中,我们将探讨一些解决方案,帮助开发者在这种情况下仍......
  • 读《计算机网络-自顶向下方法》有感
    本书看至101页,基于已看的100页做出如下感想,本感想将持续更新。这本书采用总分形式,第一章先进行总的概述,之后几章依次从应用层,运输层,网络层,链路层,物理层,然后再对未来技术的展望,5G等。计算机网络就是解决通信之间的事,类似于人与人之间的交流。协议就是之间的种种规定,分层架构就是......
  • android studio打开别人的项目,解决各种错误的方法
    1、as提示,gradle工具从官方地址下载不下来(非常常见):修改项目下Gradlescript的gradle-wrapper.properties因为天朝网络屏蔽,把官方地址修改为国内腾讯源即可让androidstudio正常自动下载https://mirrors.cloud.tencent.com/gradle/gradle-7.2-bin.zip,最后的gradle-7.2-bin.zip必......
  • python安装包(模块)的八种方法
    1.使用easy_installeasy_install这应该是最古老的包安装方式了,目前基本没有人使用了。下面是easy_install的一些安装示例#通过包名,从PyPI寻找最新版本,自动下载、编译、安装$easy_installpkg_name#通过包名从指定下载页寻找链接来安装或升级包$easy_install-fhttp:/......