当前位置: 首页 > news >正文

【java学习—九】模板方法(TemplateMethod)设计模式(4)

文章目录

  • 1. 在java中什么是模板
  • 2. 模板方法设计解决了什么问题?
  • 3. 代码化理解


1. 在java中什么是模板

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

抽象类就像一个大纲,里面的抽象方法就是每个章节的标题;子类去根据这些标题把每个章节的内容写出来

2. 模板方法设计解决了什么问题?

    当功能内部一部分实现是确定,一部分实现是不确定的。这时可以把不确定的部分暴露出去,让子类去实现。
    编写一个抽象父类,父类提供了多个子类的通用方法,并把一个或多个方法留给其子类实现(就是一种模板模式)。

3. 代码化理解

package day09;
/*** 模板设计模式* @author 14532**/
public abstract class Template {public abstract void code();//code()的实现是不确定的public final void getTime() {long start = System.currentTimeMillis();code();//把code()方法留给其子类实现long end = System.currentTimeMillis();System.out.println("code方法执行的时间:" + (end - start));}
}class TestTmp extends Template{@Overridepublic void code() {//把不确定code()的部分暴露出去,让子类TestTmp去实现。int k =0;for(int i = 0; i < 5000; i++) {k += 1;}System.out.println(k);}
}

Test.java:

package day09;public class Test {public static void main(String[] args) {TestTmp t = new TestTmp();t.getTime();}
}

运行结果:

在这里插入图片描述

http://www.lryc.cn/news/209932.html

相关文章:

  • 【MyBatis Plus】初识 MyBatis Plus,在 Spring Boot 项目中集成 MyBatis Plus,理解常用注解以及常见配置
  • Centos7 安装和配置 Redis 5 教程
  • 使用 RAG、Langchain 和 Streamlit 制作用于文档问答的 AI 聊天机器人
  • 论文阅读——RoBERTa
  • springboot项目打jar包,运行时提示jar中没有主清单属性
  • 【Codeforces】 CF79D Password
  • 叛乱沙漠风暴server安装 ubuntu 22.04
  • ES6中的新增属性——解构赋值
  • 行业追踪,2023-10-27
  • Qt QWebEngine 更换语言
  • Docker一键开启、停止和删除所有容器
  • 2016年亚太杯APMCM数学建模大赛B题化学元素对变形钢筋性能的影响求解全过程文档及程序
  • 美颜SDK集成指南:为应用添加视频美颜功能
  • AquilaChat2-34B 主观评测接近GPT3.5水平,最新版本Base和Chat权重已开源!
  • useGeneratedKeys=“true“ keyProperty=“id“
  • Java 浅拷贝会带来的问题
  • Monocle 3 | 太牛了!单细胞必学R包!~(二)(寻找marker及注释细胞)
  • 简述JVM
  • 【多线程面试题 六】、 如何实现线程同步?
  • 地面文物古迹保护方案,用科技为文物古迹撑起“智慧伞”
  • k8s之Flannel网络插件安装提示forbidden无权限
  • 在微信小程序云开发中引入Vant Weapp组件库
  • Vue+ElementUI项目打包部署到Ubuntu服务器中
  • 面试题收集——Java基础部分(一)
  • Vue中this指向问题
  • 【iPad已停用】解锁教程
  • python不调用heapq库 实现大顶堆,小顶堆
  • STM32F4X SDIO(二) SDIO协议
  • 设计模式--7个原则
  • AltiumDesigner原理图编译错误报告信息解释