当前位置: 首页 > 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。

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

相关文章:

  • Centos7静态路由和动态路由
  • 戴尔(Dell)服务器运行状况监控
  • vue3文档v-model.xxxx自定义修饰符
  • 微信小程序毕业设计-智慧旅游平台系统项目开发实战(附源码+演示视频+LW)
  • 抖音小店新规又来了!平台下调了两项门槛,惊掉商家下巴!
  • 【启程Golang之旅】运算符与流程控制讲解
  • Docker: exec命令浅析
  • c++的查漏补缺 1、函数指针
  • uniapp+php服务端实现苹果iap内购的消耗性项目和非续期订阅项目,前后端代码加逻辑分析
  • 【代码随想录】【算法训练营】【第11天】 [20]有效的括号 [1047]删除字符串中的所有相邻重复项 [150]逆波兰表达式求值
  • vue实现图片懒加载
  • Python | Leetcode Python题解之第101题对称二叉树
  • 周报5.20~5.26
  • RDP方式连接服务器上传文件方法
  • 网络信息安全
  • java中的对象
  • 【MySQL精通之路】MySQL-环境变量
  • Day42 最后一块石头的重量Ⅱ + 目标和 + 一和零
  • 01.爬虫---初识网络爬虫
  • 集合、Collection接口特点和常用方法
  • 12. Web开发:介绍Web开发的基本概念,Servlet和JSP的使用,MVC设计模式的应用等。
  • 文件系统--inode
  • 数据清洗(ETL)案例实操
  • Zookeeper 面试题(一)
  • 怎么安装django特定版本
  • 关于Broken pipe异常的一点学习记录
  • 第十一课,end关键字、简单while循环嵌套、初识for循环
  • spring boot 集成mongodb
  • 从零开始搭建SpringCloud Alibaba微服务架构
  • SpringBoot(八)之JdbcTemplate