设计模式之模板模式

1、什么是模板模式

在模板模式中,一个抽象类公开定义了执行它的方法的方式/模板。它的子类可以按需要要重写方法实现,但调用将以抽象类中定义的方式进行,这种类型的设计模式属于行为型模式

2、意图

定义一个操作中的算法骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定功能。

3、案例

开车接口

java 复制代码
public abstract class KaiChe {
    public  final void kaiChe(){
        kaiCheMen();
        jiAnQUanDai();
        daHuo();
        guanDang();
        caiYouMen();
    }

    //打开车门
    abstract void kaiCheMen();
    //系安全带
    abstract void jiAnQUanDai();
    //打火
    abstract void daHuo();
    //挂挡
    abstract void guanDang();
    //踩油门
    abstract void caiYouMen();
}

开宝马车

java 复制代码
public class DrivenBaoMa extends KaiChe{
    @Override
    void kaiCheMen() {
        System.out.println("打开宝马车门");
    }

    @Override
    void jiAnQUanDai() {
        System.out.println("系安全带");
    }

    @Override
    void daHuo() {
        System.out.println("使用宝马钥匙打火");
    }

    @Override
    void guanDang() {
        System.out.println("挂一档");
    }

    @Override
    void caiYouMen() {
        System.out.println("踩油门");
    }
}

测试

java 复制代码
public class Test {
    public static void main(String[] args) {
        DrivenBaoMa drivenBaoMa=new DrivenBaoMa();
        drivenBaoMa.kaiChe();
    }
}

4、优缺点

优点:

1、封装不变,扩展可变【部分】

2、提取公共代码,便于维护

3、行为有父类控制,子类实现

缺点:

每一个不同的实现都需要一个子类来实现,导致类的个数增加,使得系统更加庞大

5、使用场景

1、有多个子类共有的方法,且逻辑相同

2、重要的、复杂的方法,可以考虑作为模板方法

注意:为了防止恶意操作,一般模板方法都加上final关键词

6、你所见到的模板模式

1、JdbcTemplate

2、RedisTemplate

相关推荐
我是一颗柠檬2 分钟前
【Java项目技术亮点】Redis Lua脚本原子化操作:高并发场景下的终极武器
java·redis·lua
swg3213214 分钟前
Redis实现主从选举
java·前端·redis
码云骑士4 分钟前
03-Python可变对象与不可变对象(下)-深浅拷贝的底层真相
开发语言·python
Java 码思客5 分钟前
【ElasticSearch 从入门到架构师】第6章_分词器与文本检索
java·elasticsearch
Flittly6 分钟前
【AgentScope Java新手村系列】(6)Hook与Middleware
java·spring boot·笔记·spring·ai
向量引擎6 分钟前
AI API 正在进入“请求生命周期治理”阶段:从模型迁移、Agent 接入到成本与安全排错的工程化方法
java·人工智能·python·aigc·ai编程·ai写作·gpu算力
sycmancia7 分钟前
Qt——自定义模型类
开发语言·qt
MATLAB代码顾问12 分钟前
Python数据分析项目实战:销售数据仪表盘
开发语言·python·数据分析
码云骑士13 分钟前
07-Python装饰器从入门到源码(下)-带参数装饰器与wraps
开发语言·python
许彰午14 分钟前
34_Java设计模式之单例模式
java·单例模式·设计模式