Java中23种面试常考的设计模式之模板模式(Template)---行为型模式

简介: Java中23种面试常考的设计模式之模板模式(Template)---行为型模式

【Java中23种面试常考的设计模式之模板模式(Template)---行为型模式】

知识回顾:
>

之前我们讲过的设计模式在这里呦:
【面试最常见的设计模式之单例模式】
【面试最常见的设计模式之工厂模式】
【Java中23种面试常考的设计模式之备忘录模式(Memento)---行为型模式】
【Java中23种面试常考的设计模式之观察者模式(Observer)---行为型模式】
接下来我们要进行学习的是:【Java中23种面试常考的设计模式之模板模式(Template)---行为型模式】。

模板模式

模板模式核心思想是:一个抽象类公开定义了执行它的方法的方式/模板,它的子类可以按需要重写方法实现。通俗来说就是处理步骤父类中定义好,具体的实现延迟到子类定义中。

生产开发中常用的使用场景

  1. ORM框架之Hibernate中的模板程序
  2. ORM框架之Mybatis中连接数据库的封装
  3. Spring中的JdbcTemplate,HibernateTemplate等
  4. 数据库JDBC连接访问的封装
  5. Servlet中的doGet和doPost方法
  6. 各大API接口中定义的模板方法
  7. 等等。。。。。等等。。。。

观察者模式优点与缺点

优点

  1. 封装不可变的部分,对可以改变的部分进行拓展
  2. 封装的代码就是公共的代码,需要将其抽离出来,便于管理与维护
  3. 父类与定义规则,子类具体实现

缺点

  1. 每一个不同的实现都需要一个子类来实现,子类的个数会变得越来越多,最终不便于我们对于程序的管理以及维护

核心角色

定义规则的抽象、不可变的模板类,以及实现规则,进行具体业务逻辑的具体子类。
为防止恶意操作,一般模板方法都加上 final 关键词。

UML类图

image.png

实现代码

我们举这样一个栗子:模拟所有学生开学报到的流程: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("------------------");
    }
}

运行结果展示:

image.png

好了,到这里【Java中23种面试常考的设计模式之模板模式(Template)---行为型模式】就结束了,23种设计模式持续更新汇总中。

相关文章
|
2月前
|
设计模式 Java Spring
Java 设计模式之责任链模式:优雅处理请求的艺术
责任链模式通过构建处理者链,使请求沿链传递直至被处理,实现发送者与接收者的解耦。适用于审批流程、日志处理等多级处理场景,提升系统灵活性与可扩展性。
275 2
|
2月前
|
设计模式 网络协议 数据可视化
Java 设计模式之状态模式:让对象的行为随状态优雅变化
状态模式通过封装对象的状态,使行为随状态变化而改变。以订单为例,将待支付、已支付等状态独立成类,消除冗长条件判断,提升代码可维护性与扩展性,适用于状态多、转换复杂的场景。
303 0
|
4月前
|
设计模式 缓存 Java
Java设计模式(二):观察者模式与装饰器模式
本文深入讲解观察者模式与装饰器模式的核心概念及实现方式,涵盖从基础理论到实战应用的全面内容。观察者模式实现对象间松耦合通信,适用于事件通知机制;装饰器模式通过组合方式动态扩展对象功能,避免子类爆炸。文章通过Java示例展示两者在GUI、IO流、Web中间件等场景的应用,并提供常见陷阱与面试高频问题解析,助你写出灵活、可维护的代码。
|
2月前
|
设计模式 算法 搜索推荐
Java 设计模式之策略模式:灵活切换算法的艺术
策略模式通过封装不同算法并实现灵活切换,将算法与使用解耦。以支付为例,微信、支付宝等支付方式作为独立策略,购物车根据选择调用对应支付逻辑,提升代码可维护性与扩展性,避免冗长条件判断,符合开闭原则。
312 35
|
3月前
|
算法 Java
50道java集合面试题
50道 java 集合面试题
|
2月前
|
设计模式 消息中间件 传感器
Java 设计模式之观察者模式:构建松耦合的事件响应系统
观察者模式是Java中常用的行为型设计模式,用于构建松耦合的事件响应系统。当一个对象状态改变时,所有依赖它的观察者将自动收到通知并更新。该模式通过抽象耦合实现发布-订阅机制,广泛应用于GUI事件处理、消息通知、数据监控等场景,具有良好的可扩展性和维护性。
261 8
|
4月前
|
设计模式 安全 Java
Java设计模式(一):单例模式与工厂模式
本文详解单例模式与工厂模式的核心实现及应用,涵盖饿汉式、懒汉式、双重检查锁、工厂方法、抽象工厂等设计模式,并结合数据库连接池与支付系统实战案例,助你掌握设计模式精髓,提升代码专业性与可维护性。
|
4月前
|
设计模式 XML 安全
Java枚举(Enum)与设计模式应用
Java枚举不仅是类型安全的常量,还具备面向对象能力,可添加属性与方法,实现接口。通过枚举能优雅实现单例、策略、状态等设计模式,具备线程安全、序列化安全等特性,是编写高效、安全代码的利器。
|
3月前
|
算法 Java
50道java基础面试题
50道java基础面试题

热门文章

最新文章