设计模式-模板方法模式

news/2024/10/4 5:24:46
模板方法模式

模板方法模式(Template Method Pattern),又叫模板模式,是指定义一个操作中的算法的框架,而将一些步骤延迟到子类中,使得子类可以不改变一个算法的结构即可重新定义该算法的默写特定步骤,属于行为型设计模式。

模板方法的本质是抽象封装流程,该流程由几个步骤组成,具体步骤可以由子类进行不同实现,从而让固定得流程产生不同的结果。简单地说,就是类的继承机制,但是应用比较广泛。

角色:
  • 抽象模板:定义了一套算法框架或流程;
  • 具体实现:对算法框架或流程的某些步骤进行了实现
package com.jdwa.mode;public abstract class AstractCource {private boolean needCheckHomework = false;public void setNeedCheckHomework(boolean needCheckHomework){this.needCheckHomework = needCheckHomework;}//规定步骤,不可被重写public final void createCource(){postPreResource();createNote();liveVideo();postHomework();if(neekCheckHomewoork()){checkHomework();}}protected abstract void checkHomework();protected boolean neekCheckHomewoork(){return needCheckHomework;}protected void postPreResource(){System.out.println("postPreResource====");}protected void createNote(){System.out.println("ppt and note====");}protected void liveVideo(){System.out.println("liveVideo====");}protected void postHomework(){System.out.println("postHomework====");}
}
package com.jdwa.mode;public class JavaCource extends AstractCource{@Overrideprotected void checkHomework() {System.out.println("check java homework ...");}}
package com.jdwa.mode;public class PythonCource extends AstractCource{@Overrideprotected void checkHomework() {System.out.println("check python homework ...");}
}
package com.jdwa.mode;public class Client {public static void main(String[] args) {System.out.println("======java cource======");AstractCource java  = new JavaCource();java.setNeedCheckHomework(true);java.createCource();System.out.println("====python cource====");AstractCource py = new PythonCource();py.createCource();}
}
======java cource======
postPreResource====
ppt and note====
liveVideo====
postHomework====
check java homework ...
====python cource====
postPreResource====
ppt and note====
liveVideo====
postHomework====
欢迎大家留言,以便于后面的人更快解决问题!另外亦欢迎大家可以关注我的微信公众号,方便利用零碎时间互相交流。共勉!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ryyt.cn/news/44373.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

设计模式-委派模式

委派模式 委派模式(Delegate Pattern)又叫委托模式,它允许对象组合实现与继承相同的代码重用。它的基本作用就是负责任务的调用与分配任务,是一种特殊的静态代理,可以理解为全权代理。但是,代理过程注重过程,而委派模式注重结果。 角色: 抽象任务角色(Task):定义一个抽…

开发者选项-显示指针位置

开发者选项-指针位置应用设置部分搜索对应字串,在SettingsLib中搜到“指针位置”字串,其id名为pointer_location根据id在Settings中搜索布局相关(res/xml/development_settings.xml)查看其key(pointer_location)相关代码显然,在点击指针位置的控件时,在设置中会对应在S…

BootAnimation简析

BootAnimation简析BootAnimation是开机动画,其对应源码在frameworks\base\cmds\bootanimation(这里使用android12的代码查看,不同版本代码有差异,但大体逻辑一般都差别不大),其编译产物是个二进制可执行文件bootanimation,在开机过程中会执行播放开机动画,其目录中有个…

Unreal RecastNavigation 开源项目详解

Recastnavigation是一个游戏AI导航库,像Unity,UE引擎中都集成了这个开源项目, HALO中使用的也是这个开源库。导航最重要的就是为NPC寻路,以及其他的寻路需求。0 前言 Recastnavigation是一个游戏AI导航库,像Unity,UE引擎中都集成了这个开源项目, HALO中使用的也是这个开…

编写单个函数的ROP链

什么是ROP链 在我初识栈溢出那篇博客已经详细的讲了函数的调用过程(基于X86框架),不了解的可以看一下,没有这个理论基础,是学不好ROP的。现在我们说一下什么是ROP。 ROP链就是通过返回地址的修改来完成的编程,调用特定的函数的一种编程模式。我们可以联想一下你做的最简单…

计组要我命第五天中

要命计组(6) 开始时间 2024-06-1612:38:07 结束时间 2024-06-16 15:01:11 前言:吃完饭,睡会觉,继续计组[fine]. 总结:中场休息!

聊聊育种大模型

从去年年末开始到现在,大语言模型(Large Language Models,LLM)热度依旧不减。 有实力烧钱的机构在训练自己的LLM,没实力想凑热闹的更聚焦在垂直领域的应用上,绝大多数企业属于后者。 每个行业多多少都有人在做基础模型的微调和打造私有知识库,以期不被时代抛弃。 医疗、…

MyBatis 的缓存机制

1. MyBatis 的缓存机制 @目录1. MyBatis 的缓存机制2. 准备工作3. MyBatis 的一级缓存3.1 一级缓存失效情况/条件4. MyBatis 的二级缓存5. MyBatis 集成 EhCache 第三方缓存6. 总结:7. 最后:缓存(Cache) 缓存的作用:通过减少 IO 的方式,来提高程序的执行效率 。 MyBatis …