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

Java进阶学习笔记14——模板方法设计模式

面试和看源码。

谈到设计模式:

1、解决了什么问题?

2、怎么写?

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

解决方法中存在重复代码的问题。

写法:

1)定义一个抽象类:

2)在里面定义两个方法:

1> 一个是模板方法,把相同的代码放进去;

2> 一个是抽象方法,具体实现交给子类完成;

People类:

package cn.ensource.d6_abstact_template;public abstract class People {// 设计模板方法设计模式// 1. 定义一个模板方法出来public void write() {System.out.println("====我的爸爸====");System.out.println("我的爸爸好牛啊~");
//        System.out.println("我的爸爸特别牛,开车都不开红绿灯!");// 模板方法其实也不清楚正文部分到底应该是怎么写?但是它知道子类必须写的。System.out.println(writeMain());System.out.println("有这样的爸爸太好了!");}// 3. 设计一个抽象方法,具体的实现交给子类来完成public abstract String writeMain();
}

Teacher类:

package cn.ensource.d6_abstact_template;public class Teacher extends People {@Overridepublic String writeMain() {return "我的爸爸特别牛,让我站在这里别走,他去买个橘子!";}
}

Student类:

package cn.ensource.d6_abstact_template;public class Teacher extends People {@Overridepublic String writeMain() {return "我的爸爸特别牛,让我站在这里别走,他去买个橘子!";}
}

测试类:

package cn.ensource.d6_abstact_template;public class Test {public static void main(String[] args) {// 目标:搞清楚抽象类的应用场景,设计模板方法模式// 场景:学生和老师都要写一篇作文:我的爸爸// 第一段是一样的// 正文部分自由发挥// 最后一段也是一样的Teacher t = new Teacher();t.write();Student s = new Student();s.write();}
}

多学一招:

建议使用final关键字修饰模板方法,为什么?

模板方法,禁止子类再去方法重写,防止失效。

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

解决了方法中存在重复代码的问题。

模板方法设计模式应该怎么写?

定义一个抽象类;

在里面定义2个方法,一个是模板方法,放相同的代码,一个是抽象方法:具体实现交给子类完成。

模板方法建议使用什么关键字修饰?为什么?

final,不再让子类方法重写@override。

相关文章:

Java进阶学习笔记14——模板方法设计模式

面试和看源码。 谈到设计模式: 1、解决了什么问题? 2、怎么写? 模板方法设计模式解决了什么问题? 解决方法中存在重复代码的问题。 写法: 1)定义一个抽象类: 2)在里面定义两个方…...

Centos7静态路由和动态路由

路由,即路由选择(Routing),是指在计算机网络中选择数据传输路径的过程。路由器(Router)是执行路由选择功能的网络设备。路由的主要目的是在复杂的网络结构中,选择最佳路径将数据包从源节点传递到…...

戴尔(Dell)服务器运行状况监控

戴尔(Dell)服务器因其加速的性能、增强的自动化和简化的管理而受到全球许多组织的青睐,许多组织将其业务关键应用程序和功能放在戴尔(Dell)服务器中,因此,有效的戴尔(Dell&#xff0…...

vue3文档v-model.xxxx自定义修饰符

...

微信小程序毕业设计-智慧旅游平台系统项目开发实战(附源码+演示视频+LW)

大家好!我是程序猿老A,感谢您阅读本文,欢迎一键三连哦。 💞当前专栏:微信小程序毕业设计 精彩专栏推荐👇🏻👇🏻👇🏻 🎀 Python毕业设计…...

抖音小店新规又来了!平台下调了两项门槛,惊掉商家下巴!

大家好,我是电商糖果 平台这几年为了快速发展电商项目,一直在向商家释放友好政策,目的就是为了吸引更多的商家入驻。 这不官方5月30日起下调了两个门槛,让不少商家大呼不可思议。 第一个就是保证金下调。 平台按照商家经营类目…...

【启程Golang之旅】运算符与流程控制讲解

欢迎来到Golang的世界!在当今快节奏的软件开发领域,选择一种高效、简洁的编程语言至关重要。而在这方面,Golang(又称Go)无疑是一个备受瞩目的选择。在本文中,带领您探索Golang的世界,一步步地了…...

Docker: exec命令浅析

简介 Docker exec命令是Docker提供的一个强大工具,用于在正在运行的容器中执行命令。在此将介绍Docker exec命令的用法和示例,帮助大家更好地理解和使用这个命令。 Docker是一种流行的容器化平台,允许用户在容器中运行应用程序。有时候&#…...

c++的查漏补缺 1、函数指针

今天写链表的插入排序时遇到了一个问题 void InsertionSortList(ListNode* head, int n){if (!head||!head->next) return nullptr;auto dummy new ListNode(-1);dummy->next head;auto pre head;auto cur head->next;while (cur ! NULL){auto tmp dummy;if (pre…...

uniapp+php服务端实现苹果iap内购的消耗性项目和非续期订阅项目,前后端代码加逻辑分析

前言:公司的项目app在上架苹果商店时发现人家要求里面的部分购买项目必须使用iap购买的方式,使用原本的微信支付方式审核不给通过,无奈只能重新研究这个东西。做起来还是有点麻烦,主要是网上的文章很少,不能直接硬抄。…...

【代码随想录】【算法训练营】【第11天】 [20]有效的括号 [1047]删除字符串中的所有相邻重复项 [150]逆波兰表达式求值

前言 思路及算法思维,指路 代码随想录。 题目来自 LeetCode。 day 11,周六,又开始变的困难了~ 题目详情 [20] 有效的括号 题目描述 20 有效的括号 解题思路 前提:括号匹配 思路:利用栈的后入先出特性&#xf…...

vue实现图片懒加载

在src中创建一个directives文件夹在里面创建一个lazy.js文件 在main.js中引入 import lazy from ./directives/lazy app.directive(lazy, lazy) 在app.vue中 <script setup lang"ts"> import { RouterLink, RouterView } from vue-router import HelloWorl…...

Python | Leetcode Python题解之第101题对称二叉树

题目&#xff1a; 题解&#xff1a; class Solution:# 在【100. 相同的树】的基础上稍加改动def isSameTree(self, p: Optional[TreeNode], q: Optional[TreeNode]) -> bool:if p is None or q is None:return p is qreturn p.val q.val and self.isSameTree(p.left, q.ri…...

周报5.20~5.26

学习内容&#xff1a; 主要了解了Qt的信号和槽、ui页面布局、各类常见控件的使用、绘图事件以及文件操作的相关知识&#xff0c;并且完成相关案例的设计。练习代码了解了多层感知机、激活函数、多项式回归、高维线性回归、暂退法、分布偏移、深度学习计算等相关知识与代码案例…...

RDP方式连接服务器上传文件方法

随笔 目录 1. RDP 连接服务器 2. 为避免rdp 访问界面文字不清晰 3. 本地上传文件到服务器 1. RDP 连接服务器 # mstsc 连接服务器step1: 输入mstscstep2: 输入 IP, username, passwd 2. 为避免rdp 访问界面文字不清晰 解决方法&#xff1a; 3. 本地上传文件到服务器 step…...

网络信息安全

目录 引言 网络信息安全的基本概念 定义 主要目标 网络信息安全的范围 主要威胁 恶意软件 黑客攻击 拒绝服务攻击 社交工程 内部威胁 常用技术和防护措施 加密技术 防火墙 入侵检测和防御系统 访问控制 多因素认证 安全审计和监控 安全培训和意识提升 未来发…...

java中的对象

文章目录 一、对象的创建过程1.1 检查加载1.2 分配内存1.3 内存空间初始化1.4 设置对象头1.5 对象初始化 二、对象内存布局2.1 布局解析2.2 JOL使用 三、对象的访问定位3.1 句柄访问3.2 直接指针 四、对象的分配策略4.1 栈上分配4.2 优先分配到Eden区4.3 大对象直接进入老年代4…...

【MySQL精通之路】MySQL-环境变量

本节列出了MySQL直接或间接使用的环境变量。 其中大部分也可以在本手册的其他地方找到。 命令行上的选项优先于选项文件和环境变量中指定的值&#xff0c;选项文件中的值优先于环境变量中的值。 在许多情况下&#xff0c;最好使用配置文件而不是环境变量来修改MySQL的行为。…...

Day42 最后一块石头的重量Ⅱ + 目标和 + 一和零

1049 最后一块石头的重量Ⅱ 题目链接&#xff1a;1049.最后一块石头的重量Ⅱ 有一堆石头&#xff0c;用整数数组 stones 表示。其中 stones[i] 表示第 i 块石头的重量。 每一回合&#xff0c;从中选出任意两块石头&#xff0c;然后将它们一起粉碎。假设石头的重量分别为 x 和…...

01.爬虫---初识网络爬虫

01.初识网络爬虫 1.什么是网络爬虫2.网络爬虫的类型3.网络爬虫的工作原理4.网络爬虫的应用场景5.网络爬虫的挑战与应对策略6.爬虫的合法性总结 1.什么是网络爬虫 网络爬虫&#xff0c;亦称网络蜘蛛或网络机器人&#xff0c;是一种能够自动地、系统地浏览和收集互联网上信息的程…...

内网环境下Win7系统批量离线补丁部署实战指南

1. 内网Win7补丁部署的挑战与解决方案老旧Win7系统在内网环境中的安全隐患就像漏雨的屋顶&#xff0c;看似不影响日常使用&#xff0c;但随时可能引发严重后果。我经手过几十家单位的系统加固项目&#xff0c;发现这些场景存在三个典型痛点&#xff1a;首先是补丁来源问题&…...

Scroll Reverser:让Mac的多设备滚动体验回归直觉的免费神器

Scroll Reverser&#xff1a;让Mac的多设备滚动体验回归直觉的免费神器 【免费下载链接】Scroll-Reverser Per-device scrolling prefs on macOS. 项目地址: https://gitcode.com/gh_mirrors/sc/Scroll-Reverser 你是否曾经在MacBook的触控板和鼠标之间切换时&#xff0…...

阿波罗登月,不可能:读心术与影子叙事 ——不是向全世界展示登月,而是向全世界注射登月

阿波罗登月&#xff0c;不可能&#xff1a;读心术与影子叙事 ——不是向全世界展示登月&#xff0c;而是向全世界注射登月 Jianbing Zhu 1^{1}1 1^{1}1 ECT-OS-JiuHuaShan 文明实验室 ORCID: 0009-0006-8591-1891 DOI: 10.5281/zenodo.20373157 Email: ect-os-jiuhuashanzoho…...

WebSocket实时通信架构进阶:Room、命名空间与集群部署

WebSocket实时通信架构进阶:Room、命名空间与集群部署 作者:Crown_22 | AI Agent & Hermes Agent 桌面程序开发者 前言 WebSocket已经成为实时应用的标准技术,但大多数教程只停留在"建立连接、发送消息"的基础阶段。在生产环境中,你需要处理Room管理、命名空…...

Unity iOS构建报错SDK version is 0的根因与精准修复

1. 这个报错不是Unity在“发脾气”&#xff0c;而是工程配置在“装死”刚接手一个老项目&#xff0c;打开Unity编辑器&#xff0c;点Build Settings准备打包iOS&#xff0c;结果弹出一行红字&#xff1a;“SDK version is 0, cannot build”。我第一反应是——这什么鬼&#xf…...

谷氨酸发酵过程的软测量建模【附模型】

✨ 长期致力于软测量、谷氨酸发酵、动力学模型、支持向量机、高斯过程、变量选择、异常状态研究工作&#xff0c;擅长数据搜集与处理、建模仿真、程序编写、仿真设计。 ✅ 专业定制毕设、代码 ✅ 如需沟通交流&#xff0c;点击《获取方式》 &#xff08;1&#xff09;多阶段高斯…...

高精度光照检测

光线检测仪&#xff0c;kotlin开发&#xff0c;调用手机感光模块检测室内外光照强度&#xff0c;用途多多&#xff0c;我主要用途孩子写作业检测光照保护视力。 食用方法∶打开即测&#xff0c;速度快&#xff0c;无广告&#xff0c;手机平视即可&#xff0c;无须直视光线。 买…...

yolo视频识别 车辆速度估计识别 yolo11视频实时速度测量与测速估计

文章目录YOLOv11&#xff1a;视频实时速度测量与测速估计一、YOLOv11概述二、速度测量原理三、距离测量方法四、应用场景五、实践案例以下是关于使用YOLOv11进行视频实时速度测量与测速估计的介绍&#xff1a; YOLOv11&#xff1a;视频实时速度测量与测速估计 随着计算机视觉…...

对比自行维护多个 API 源,使用 Taotoken 聚合服务在运维复杂度上的降低

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 对比自行维护多个 API 源&#xff0c;使用 Taotoken 聚合服务在运维复杂度上的降低 在构建依赖多个大语言模型的应用时&#xff0c…...

【Lindy营销自动化工作流终极指南】:20年实战验证的7大反脆弱性设计原则,92%企业漏掉的关键衰减阈值

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;Lindy营销自动化工作流的基本范式与历史验证 Lindy效应指出&#xff0c;一个事物的预期剩余寿命与其当前年龄成正比——在营销自动化领域&#xff0c;Lindy范式体现为&#xff1a;经时间检验仍被广泛采…...