【Java中23种面试常考的设计模式之模板模式(Template)---行为型模式】
知识回顾:
>
之前我们讲过的设计模式在这里呦:
【面试最常见的设计模式之单例模式】
【面试最常见的设计模式之工厂模式】
【Java中23种面试常考的设计模式之备忘录模式(Memento)---行为型模式】
【Java中23种面试常考的设计模式之观察者模式(Observer)---行为型模式】
接下来我们要进行学习的是:【Java中23种面试常考的设计模式之模板模式(Template)---行为型模式】。
模板模式
模板模式核心思想是:一个抽象类公开定义了执行它的方法的方式/模板,它的子类可以按需要重写方法实现。通俗来说就是处理步骤父类中定义好,具体的实现延迟到子类定义中。
生产开发中常用的使用场景
- ORM框架之Hibernate中的模板程序
- ORM框架之Mybatis中连接数据库的封装
- Spring中的JdbcTemplate,HibernateTemplate等
- 数据库JDBC连接访问的封装
- Servlet中的doGet和doPost方法
- 各大API接口中定义的模板方法
- 等等。。。。。等等。。。。
观察者模式优点与缺点
优点
- 封装不可变的部分,对可以改变的部分进行拓展
- 封装的代码就是公共的代码,需要将其抽离出来,便于管理与维护
- 父类与定义规则,子类具体实现
缺点
- 每一个不同的实现都需要一个子类来实现,子类的个数会变得越来越多,最终不便于我们对于程序的管理以及维护
核心角色
定义规则的抽象、不可变的模板类,以及实现规则,进行具体业务逻辑的具体子类。
为防止恶意操作,一般模板方法都加上 final 关键词。
UML类图
实现代码
我们举这样一个栗子:模拟所有学生开学报到的流程:1.到校 2.提交材料 3.审核通过
模板类
package com.template;
public abstract class Register{
abstract void come();
abstract void submit();
abstract void pass();
//模板
public final void reportTemplate(){
//到校
come();
//提交材料
submit();
//审核通过
pass();
}
}
具体实现类1
package com.template;
public class StudentA extends Register{
@Override
void come() {
// TODO Auto-generated method stub
System.out.println("StudentA come");
}
@Override
void submit() {
// TODO Auto-generated method stub
System.out.println("StudentA submit");
}
@Override
void pass() {
// TODO Auto-generated method stub
System.out.println("StudentA pass");
}
}
具体实现类2
package com.template;
public class StudentB extends Register{
@Override
void come() {
// TODO Auto-generated method stub
System.out.println("StudentB come");
}
@Override
void submit() {
// TODO Auto-generated method stub
System.out.println("StudentB submit");
}
@Override
void pass() {
// TODO Auto-generated method stub
System.out.println("StudentB pass");
}
}
测试代码
package com.template;
public class Main {
public static void main(String[] args){
Register register1=new StudentA();
register1.reportTemplate();
System.out.println("------------------");
Register register2=new StudentB();
register2.reportTemplate();
System.out.println("------------------");
}
}
运行结果展示:
好了,到这里【Java中23种面试常考的设计模式之模板模式(Template)---行为型模式】就结束了,23种设计模式持续更新汇总中。