设计模式(四)之模板模式(TemplateMethodPattern)深入浅出IT学无止境99

内容定位:高级知识点,不太适合接触业务场景比较单一的开发者

模板模式的定义:

模板模式的适用场景:

模式对比:

抽象工厂模式是用接口实现的,当然也可以用抽象类,重点是归纳和总结对象的创建过程;

模板模式使用的是抽象类,在不改变流程的情况下,定制一些个性化的东西,达到出现不同结果的目的。

策略模式是只提供选择权,内部已经定义好所有的流程,没有干预逻辑的权利,关心的是结果;

模板模式关心整个流程实现的过程,可以微调流程和干预逻辑。

模板模式应用场景案例:

案例:网课老师备课需要固定的流程,但是不同的网课课后要求不一样,作业也不一样

网课抽象类

/***@author:ZhouCong*@date:Createin2021/1/1115:23*@description:网课抽象类模板会有一个或者多个未实现的方法,而且这几个未实现方法有着固定的执行顺序*/publicabstractclassNetworkCourse{protectedfinalvoidcreateCourse(){//1、发布预习资料this.postPreResource();//2、制作PPT课件this.createPPT();//3、在线直播this.liveVideo();//4、提交课件、课堂笔记this.postNode();//5、提交源码this.postSource();//6、布置作业,有些课有作业有些课没有作业//如果有作业的话,检查作业,没有作业,完成了if(needHomework()){checkHomework();}}abstractvoidcheckHomework();/***钩子方法:作用实现流程微调*/protectedbooleanneedHomework(){returnfalse;};finalvoidpostSource(){System.out.println("提交源代码");};finalvoidpostNode(){System.out.println("提交课件和笔记");};finalvoidliveVideo(){System.out.println("直播授课");};finalvoidcreatePPT(){System.out.println("创建备课PPT");};finalvoidpostPreResource(){System.out.println("分发预习资料");};}Java课

/***@author:ZhouCong*@date:Createin2021/1/1115:34*@description:*/publicclassJavaCourseextendsNetworkCourse{@OverridevoidcheckHomework(){System.out.println("检查Java架构的作业");}}大数据课

/***@author:ZhouCong*@date:Createin2021/1/1115:35*@description:*/publicclassBigDataCourseextendsNetworkCourse{/***是否有作业*/privatebooleanneedHomeworkFlag=false;publicBigDataCourse(booleanneedHomeworkFlag){this.needHomeworkFlag=needHomeworkFlag;}@OverridevoidcheckHomework(){System.out.println("检查大数据的课后作业");}@OverrideprotectedbooleanneedHomework(){returnthis.needHomeworkFlag;}}测试

/***@author:ZhouCong*@date:Createin2021/1/1115:40*@description:*/publicclassNetworkCourseTest{publicstaticvoidmain(String[]args){System.out.println("-------Java架构师课程-------");NetworkCoursejavaCourse=newJavaCourse();javaCourse.createCourse();System.out.println("-----大数据课程-----");NetworkCoursebigDataCourse=newBigDataCourse(true);bigDataCourse.createCourse();}}运行结果

附上类结构图

案例:简单实现spring的jdbcTemplate

RowMapper接口:结果集映射

/***功能描述:ORM映射定制化的接口**@Param:*@Return:*@Author:ZhouCong*@Date:2021/1/1115:55*/publicinterfaceRowMapper{TmapRow(ResultSetrs,introwNum)throwsException;}JdbcTemplate

/***@author:ZhouCong*@date:Createin2021/1/1116:27*@description:*/publicclassMember{privateStringusername;privateStringpassword;privateStringnickname;privateintage;privateStringaddress;publicStringgetUsername(){returnusername;}publicvoidsetUsername(Stringusername){this.username=username;}publicStringgetPassword(){returnpassword;}publicvoidsetPassword(Stringpassword){this.password=password;}publicStringgetNickname(){returnnickname;}publicvoidsetNickname(Stringnickname){this.nickname=nickname;}publicintgetAge(){returnage;}publicvoidsetAge(intage){this.age=age;}publicStringgetAddress(){returnaddress;}publicvoidsetAddress(Stringaddress){this.address=address;}}MemberDao

/***@author:ZhouCong*@date:Createin2021/1/1116:30*@description:*/publicclassMemberDaoextendsJdbcTemplate{publicMemberDao(DataSourcedataSource){super(dataSource);}publicList<>selectAll(){Stringsql="select*fromt_member";returnsuper.executeQuery(sql,newRowMapper(){@OverridepublicMembermapRow(ResultSetrs,introwNum)throwsException{Membermember=newMember();//字段过多用原型模式优化member.setUsername(rs.getString("username"));member.setPassword(rs.getString("password"));member.setNickname(rs.getString("nickname"));member.setAge(rs.getInt("age"));member.setAddress(rs.getString("address"));returnmember;}},null);}}测试

/***@author:ZhouCong*@date:Createin2021/1/1116:48*@description:*/publicclassMemberDaoTest{publicstaticvoidmain(String[]args){MemberDaomemberDao=newMemberDao(null);List<>result=memberDao.selectAll();System.out.println(result);}}

THE END
1.浅析设计模式4——模板方法模式浅析设计模式4——模板方法模式 模板方法模式是一种行为型设计模式,通过在抽象类中定义算法骨架,将不变部分与可变部分分离,允许子类在不改变算法结构的情况下重定义特定步骤。文章介绍了模板方法模式的基本概念、结构、使用步骤,并通过网购流程的例子展示了其实现方式,强调了其在代码可维护性和扩展性方面的作用。https://blog.csdn.net/Taobaojishu/article/details/128842764
2.Java二十三种设计模式模板方法模式(14/23)(3)行为型模式,共11种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。 第一部分:模板方法模式概述 1.1 定义与用途 模板方法模式的基本定义 模板方法模式是一种行为型设计模式,它在超类(通常是抽象类)中定义了一个算法的框架或https://cloud.tencent.com/developer/article/2478374
3.一文搞懂设计模式—模板方法模式一文搞懂设计模式—模板方法模式 模板方法是一种简单但非常实用的设计模式,它通过定义一个算法的框架,并将具体实现延迟到子类中,实现了代码复用和扩展的目的。在具体实现步骤相对固定、但又存在差异性的情况下,模板方法模式能够很好地解决代码重复和维护难度的问题。https://www.51cto.com/article/781665.html
4.浅析设计模式4——模板方法模式Онлайн浅析设计模式 4——模板方法模式 出处:mp.weixin.qq.com 摘要 我们在进行软件开发时要想实现可维护、可扩展,就需要尽量复用代码,并且降低代码的耦合度。设计模式就是一种可以提高代码可复用性、可维护性、可扩展性以及可读性的解决方案。大家熟知的23种设计模式,可以分为创建型模式、结构型模式和行为型模式三大https://tool.lu/ru_RU/article/51d/detail
5.模板方法模式(TemplateMethodPattern):定义算法骨架,子类实现模板方法模式(Template Method Pattern)是一种行为型设计模式,在软件开发中扮演着重要角色。其核心思想在于定义一个操作中的算法骨架,而将算法的一些步骤延迟到子类中实现,从而使得子类可以在不改变算法结构的情况下重定义该算法的某些特定步骤。以下是对模板方法模式的详细解释,包括其结构、优缺点以及一个具体实例的讲解https://www.55kaifa.com/ruanjiankaifacihuishuyu/2038.html
6..NET设计模式之模板方法模式(TemplateMethodPattern)详解模板方法模式(Template Method Pattern),又叫模板模式(Template Pattern),是一种行为设计模式,它定义了一个操作中的算法框架,将某些步骤的具体实现留给子类,这篇文章主要介绍了.NET 设计模式—模板方法模式(Template Method Pattern),需要的朋友可以参考下https://www.jb51.net/aspnet/3195765pe.htm
7.设计模式——浅谈模板方法模式与建造者模式的异同说到模板方法模式,它可能是一个让我们深入骨髓而又不自知的模式了,因为它在我们开发过程中会经常遇到,并且也非常简单。只不过,很多时候我们并不知道它就是模板方法模式而已。不负责任的说,当我们用到override关键字重写父类方法的时候,十有***就跟模板方法模式有关了。 https://blog.nowcoder.net/n/9d6e99f61b444cdf8a7bc4335ab4aac1
8.设计模式模板方法模式设计模式-模板方法模式 前言 在面向对象程序设计过程中,程序员常常会遇到这种情况:设计一个系统时知道了算法所需的关键步骤,而且确定了这些步骤的执行顺序,但某些步骤的具体实现还未知,或者说某些步骤的实现与具体的环境相关。 例如,去银行办理业务一般要经过以下4个流程:取号、排队、办理具体业务、对银行工作人员进行https://www.jianshu.com/p/72e7d364e487
9.设计模式模板方法模式官方解释:定义一个操作中算法的框架,而将一些步骤延迟到子类中。模板方法模式使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。 设计模式大咖闫宏解释:模板方法模式是类的行为型模式。准备一个抽象类,将部分逻辑以具体方法以及具体构造函数的形式实现,然后声明一些抽象方法来迫使子类实现剩余的逻辑。不同https://www.pianshen.com/article/80931864314/