模板方法模式

《JAVA与模式》之模板方法模式 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章男女通用,看懂了就去分享给你的码吧。在阎宏博士的《JAVA与模式》一书中开头是这样描述模板方法(Template Method)模式的:模板方法模式是类的行为模式。准备一个抽象类,将部分逻辑以具体方法以及具体构造函数的形式实现,然后声明一些抽象方法来迫使子类实现剩余的逻辑。不同的子类可以以不同的方式实现这些抽象方法,从而对剩余的逻辑有不同的实现。这就是模板方法模式的用意。 阅读详情

模板方法模式

什么是模板方法

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

      重复代码全部在父类里面,不同业务的,抽取给子类进行实现。抽取过程---抽象方法。

某些特定步骤。

核心:处理某个流程的代码已经都具备,但是其中某个节点的代码暂时不能确定。因此,我们采用工厂方法模式,将这个节点的代码实现转移给

子类完成。即:处理步骤在父类中定义好,具体的实现延迟到子类中定义。

说白了,就是将一些相同操作的代码,封装成一个算法的骨架。核心的部分留在子类中操作,在父类中只把那些骨架做好。

例如:

1.去银行办业务,银行给我们提供了一个模板就是:先取号,排对,办理业务(核心部分我们子类完成),给客服人员评分,完毕。

 这里办理业务是属于子类来完成的,其他的取号,排队,评分则是一个模板。

2.去餐厅吃饭,餐厅给提供的一套模板就是:先点餐,等待,吃饭(核心部分我们子类完成),买单

这里吃饭是属于子类来完成的,其他的点餐,买单则是餐厅提供给我们客户的一个模板。

 

什么时候使用模板方法

实现一些操作时,整体步骤很固定,但是呢。就是其中一小部分容易变,这时候可以使用模板方法模式,将容易变的部分抽象出来,供子类实现。

 

中应用场景

 其实,各个框架中,都有模板方法模式的影子。

数据库访问的封装、Junit单元测试、servlet中关于doGet/doPost方法的调用

Hibernate中模板程序、spring中JDBCTemplate,HibernateTemplate等等

 

模板方法具体实现

这里使用银行办理业务为例

首先,定义一个模板。模板中把办理业务用作核心部分,让子类来实现。

 

不同的业务抽取到子类去实现

 

首先建立一个模板出来:

先定义一个模板:

 package TemplateModel;

public abstract class MsgTemplate {
  
    public void sendMsg(){
        //1.开始日志报文
        addHeadLog();
        //2.调用具体不同运营商发送
        httpRequest();
        //3.结束日志报文
        addFootLog();        
    }

    private void addFootLog() {
        System.out.println("调用运营商开始记录日志...");
        
    }

    public abstract void httpRequest();  //调用不同的运营商 需要暂时不写死 定义为抽象的 同时 类也要定义为抽象的 而且必须public类型的

    private void addHeadLog() {
        System.out.println("调用运营商结束记录日志... ");
        
    }
    
    
    
}

 

移动:

package TemplateModel;


public class YiDong extends MsgTemplate  {   //移动

    @Override
    public void httpRequest() {
        System.out.println("移动运营商的接口");
    }
    
}

联通:

package TemplateModel;

public class LianTong extends MsgTemplate{
  
     @Override
    public void httpRequest() {
        System.out.println("联通运营商的接口");        
    }
}

客户端调用:

package TemplateModel;

public class Client {

     public static void main(String[] args) {
        MsgTemplate yidong = new YiDong();
        yidong.sendMsg();
    }
    
}

运行结果:

 

 通过继承关系 继承 

 模板方法可以实现aop功能哈,aop做面向切面编程的,模板方法是把整体业务抽取出来形成一个模板。aop没有模板概念

模板方法整体是个固定的 

 

Servlet中的doGet doPost都是模板方法模式的

 要使用servlet 首先要继承HttpServlet:  HttpServlet源码:

 ====>

HttpServlet是个抽象类,经验判断 在看源码时候 如果看到了抽象类 一般会是 模板方法模式    类里面的抽象方法 到子类中去重写

重写了doPOST方法  其他的业务进行综合集中处理了  图太多我就不给大家一一截图了 大家自己研究下~~

 

 模板方法模式就是定义一个算法的骨架,而将具体的算法延迟到子类中实现

优点: 使用模板方法模式,在定义算法骨架的同时,可以很灵活的实现具体的算法,满足用户灵活多变的需求

缺点: 如果算法骨架有修改的话,则需要修改抽象类

 

package com.toov5.reflact;

 abstract class getTime{
    public final  long getTime() { //不让子类去重写
          long start =  System.currentTimeMillis();  
          code();
          long end = System.currentTimeMillis();
          return end-start;
    }
 public abstract void code();  //让子类去实现 想怎么写就怎么写
}
//子类
class Demo1 extends getTime{

    @Override
    public void code() {
        for(int i=0; i<10000; i++) {
            System.out.println("不惧");
        }
        
    }
    
}
 
 
public class ReflectTest9 {
   public static void main(String[] args) {
     Demo1 demo1 = new Demo1();
     System.err.println(demo1.getTime());
}
   
}

 

Unity安卓打包实战:SDK与JDK配置全攻略 本文详细介绍了Unity安卓打包过程中SDK与JDK的配置方法,包括工具下载、安装步骤、环境变量设置及常见错误排查。通过实战指南帮助开发者快速完成Unity安卓打包环境搭建,提升开发效率。 阅读详情

相关推荐

【游戏开发】初识寻路&navmesh,探索RecastDemo

在手游时代,尤其对于大世界游戏而言,寻路的实现基本在专门的寻路服务器上进行。在众多寻路的解决方案中,recastnavigation是最为经典实用的一个,很多游戏甚至游戏引擎都采用类似的实现。recastnavigation项目自带了RecastDemo,用图形化的界面帮助用户认识寻路网格(navmesh)的生成以及寻路的过程。因此,作为初学者的笔者,也决定通过RecastDemo去初步认识寻路的机理奥秘。 构建RecastDemo 首先克隆recastnavigation项目,从文档中可以看到Recast

HiKariのTechLab 3055

Java面试题大全带答案 110道(持续更新)

本人发现网上虽然有不少Java面试题大全带答案,但第一未必全,第二未必有答案,第三虽然有答案,但未必能在面试中说,所以在本文里,会不断收集各种面试题,并站在面试官的立场上,给出我自己的答案 如果不背 Java面试题的答案,肯定面试会挂! 这套Java面试题大全,希望对大家有帮助哈~ 博主已将以下这些面试题整理成了一个Java面试手册,是PDF版的1、CMS分为哪几个阶段? CMS已经弃用。生活美好,时间有限,不建议再深入研究了。如果碰到问题,直接祭出回收过程即可。 1、初始标记 2、并发标记..

架构师专栏 2919

linux基线检查、基线加固、安全漏扫、系统漏洞、centos7、文尾部附脚本

等保三级-CentOS Linux 7合规基线检查 风险分类:系统-等保三级-CentOS Linux 7合规基线检查 检测项说明: CentOS Linux 7合规基线检查,对标中国等保2.0第三级等级保护基本要求部分检查项目,仅供参考 检查项目 : 应对登录的用户进行身份标识和鉴别,身份标识具有唯一性,身份鉴别信息具有复杂度要求并定期更换 加固建议: 1、执行`cat /etc/shadow | awk -F: '($2 == "" ) { print $1}' `, 查看空密码账户并处理; 2、

swindy博客 5622

Java中级面试题及答案(120道Java中级面试题大汇总)

Java中级面试题及答案【最新版及答案,干货!!!这是一个中级Java面试系列题中的第一部分。这一部分论述了可变参数,断言,垃圾回收,初始化器,令牌化,日期,日历等等Java核心问题。 Java中级面试永远是程序员迈向成功的第一个门槛,想要面试成功,各种面试题的洗礼是必不可少的,下面就来看看小编精心整理的一些java高级工程师面试题及答案吧。 如果不背 Java面试题的答案,肯定面试会挂! 这套Java面试题大全,希望对大家有帮助哈~ 博主已将以下这些面试题整理成了一个Java面试手册,是PDF版的

架构师专栏 2万+

Goldwasser-Micali 公钥加密系统

1、二次剩余问题 对于整数n ,定义Zn∗={a∈Zn,gcd(a,n)=1}Z^*_n=\{ a∈Z_n,gcd(a,n) =1\}Zn∗​={a∈Zn​,gcd(a,n)=1} 。当存在d∈Znd \in Z_nd∈Zn​ ,使得 d2≡a mod nd^2 \equiv a \, mod \,nd2≡amodn ,称 a 为模 n 的二次剩余;否则称 a 为模 n的二次非剩余。判断 a 是否为模 n 的二次剩余的问题称为模n 的二次剩余问题。 \rule[-10pt]{14.3cm}{0.05em}

不染心的博客 4314

docker安装fastdfs+nginx配置

docker安装fastdfs+nginx,实现图片或文件的上传与下载

weixin_47325126的博客 2193

模板模式

1.什么是模板方法? 模板方法模式:定义一个操作中的算法骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的,重复代码全部在父类里面,不同业务的,抽取给子类进行实现。抽取过程—抽象方法。(解释一下:通俗的来说就是父类中的一部分操作定义成抽象的,交给子类来实现) 见代码: ①首先,定义一个模板。模板中把办理业务用作核心部分,让子类来实现。其他公共的相同的部分保留...

JavaAlliance 510

ALTERA Triple-Speed Ethernet IP核在UDP通信中的实战配置指南

本文详细介绍了在Intel FPGA(原ALTERA)平台上配置Triple-Speed Ethernet IP核以实现UDP通信的实战指南。内容涵盖从IP核选型、QSYS系统搭建、关键参数配置,到UDP数据包组装、NIOS C程序调试及上板验证的全流程,重点解析了如何利用该IP核快速构建稳定的千兆网通信基础,为FPGA网络应用开发提供清晰路径。

m3n5b7v8c9x的博客 513

Java设计模式 建造者模式 模板方法

建造者模式 什么是建造者模式 建造者模式:是将一个复杂的对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。 工厂类模式提供的是创建单个类的模式,而建造者模式则是将各种产品集中起来进行管理,用来创建复合对象,所谓复合对象就是指某个类具有不同的属性,其实建造者模式就是前面抽象工厂模式和最后的Test结合起来得到的。 建造者模式通常包括下面几个角色: 1、Builder:给出一个抽象接口...

kai46385076的专栏 284

AI Agent + 大数据 + RAG:电商用户行为分析的低成本落地

本文探讨了AIAgent与大数据技术在电商用户行为分析中的应用。通过构建"数据采集-实时分析-智能决策"的全自治链路,解决了传统大数据分析的三大痛点:人工建模周期长、实时性不足和决策闭环断裂。系统采用Flink+Spark处理实时数据,结合基于DeepSeek-V3.1的AIAgent实现智能分析,并通过飞书RAG模块动态获取业务知识。落地效果显示,分析响应时间从2-3天缩短至30秒,推荐转化率提升134%,验证了该方案在提升电商数据决策效率方面的显著价值。

想~ai抽 1623

从入门到精通|Yalmip+Cplex在电力系统中的应用(Matlab代码实现)

​ 火电成本包括运行成本、碳捕集成本,其中火电运行成本由运行维护成 本和发电煤耗成本构成,发电煤耗与其出力关系: ,F 为机组煤耗量(kg/h),P 为机组出力/MW;运行维护成本按照 0.5 倍煤耗成本考虑,碳捕集成本取决于碳排放量及碳捕集单价,火电机组相关参数如附表 1 所示,电煤价格为 700 元/t ​

weixin_46039719的博客 1552

模板方法模式介绍

模板方法是在操作中定义算法的框架,将一些步骤推迟到子类中。模板方法让子类在不改变算法结构的情况下重新定义算法的某些步骤。模板方法中的算法可以理解为广义上的业务逻辑,并不是特指某一个实际的算法。定义中所说的算法的框架就是模板,包含算法框架的方法就是模板方法。模板方法模式是一种基于继承的代码复用技术,它是一种类行为模式。模板方法模式其结构中只存在父类与子类之间的继承关系。今天我们就来介绍下模板方法模式。

qq_25409421的博客 1619

CS 188 Project3(RL) Q10:Approximate Q-Learning

实现一个近似的Q-learning学习代理,它学习状态特征的权重,其中许多状态可能共享相同的特征。在qlearningAgents.py中的ApproximateQAgent类中编写实现,它是PacmanQAgent的子类。 注:近似Q-learning学习假设在状态和动作对上存在一个特征函数f(s,a),它产生一个向量f1(s,a) .. fi(s,a) .. fn(s,a)特征值。我们在fe...

大模型与Agent智能体 2655

C++模板方法模式

C++模板方法模式

qqrrjj2011的博客 1523

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

【设计模式十三之模板方法模式】模板方法模式详解

Adapter Pattern适配器模式细说适配器模式细说适配器模式 细说适配器模式 提示: 博主:章飞 _906285288的博客 博客地址:http://blog.youkuaiyun.com/qq_29924041 细说适配器模式 ...

章飞 _906285288的博客 607

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

模板方法模式详解

本文来说下模板方法模式 文章目录概述 概述 在程序开发中,经常会遇到这种情况:某个方法要实现的算法需要多个步骤,但其中有一些步骤是固定不变的,而另一些步骤则是不固定的。为了提高代码的可扩展性和可维护性,模板方法模式在这种场景下就派上了用场。 ...

wh柒八九的博客 1062

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

Java设计模式之模板方法模式

模板方法模式 1. 简介 模板方法模式又称模板模式。指在一个抽象类中定义了使用它的方法的模板,子类可以按需实现某些方法,但是方法的执行还是按照抽象类中定义的顺序【模板】进行。 换言之,模板方法模式规定了一个操作的算法骨架,而部分细节实现则可以延迟到子类实现。该模式在保证算法骨架的不变性的同时,为其中的细节实现提供了可变性。 该模式属于行为型模式。 2.场景设定 豆浆制作有固定的步骤:选材==》添加配料==》浸泡==》放到豆浆机打碎。 除了添加配料在不同口味豆浆中的操作不一样外,其他步骤在每次制作

weixin_42948935的博客 743

第 16 章 模板方法模式

第 16 章 模板方法模式 1、豆浆制作问题 编写制作豆浆的程序, 说明如下: 制作豆浆的流程:选材—>添加配料—>浸泡—>放到豆浆机打碎 通过添加不同的配料, 可以制作出不同口味的豆浆 选材、 浸泡和放到豆浆机打碎这几个步骤对于制作每种口味的豆浆都是一样的 请使用模板方法模式完成 (说明:因为模板方法模式,比较简单,很容易就想到这个方案, 因此就直接使用,不再使用传统的方案来引出模板方法模式) 2、模板方法模式基本介绍 模板方法模式(Template Method Patter

Oneby的博客 526
上一篇: 今天的一些想法
下一篇: 适配器模式
Art&Code
博客等级 码龄7年 77粉丝 554原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值