设计模式之行为模式

本文详细介绍了三种行为设计模式:模板模式、命令模式和备忘录模式。模板模式常用于统计方法执行时长,如Vue的生命周期,其钩子函数在Spring IOC容器加载中有应用。命令模式用于解耦请求发起者与执行者,如Spring的JdbcTemplate,并在多线程执行和撤销操作中发挥作用。备忘录模式则用于事务回滚、游戏存档等场景,提供状态恢复机制,同时确保信息封装的安全性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、模板模式

2、命令模式

3、备忘录模式

模板模式:

在这里插入图片描述
从上面可以看出:template方法默认是用作统计method方法的执行时长,但是有的时候我们无需统计代码时长,template函数中有一些其它逻辑要执行,在这里我们可以考虑采用钩子函数;钩子函数被子类覆写,覆写成false,那么method方法就不会被调用,不再统计代码时长了;前端框架Vue的生命周期就有多处用到钩子函数;

注意事项和细节
  • 钩子函数
    在模板方法模式的父类中,我们可以定义一个方法,它默认不做任何事,子类可以视情况要不要覆盖它,该方法称为“钩子”

  • 算法只存在于一个地方,也就是在父类中,容易修改。需要修改算法时,只要修改父类的模板方法或者已经实现的某些步骤,子类就会继承这些修改

  • 一般模板方法都加上 final 关键字, 防止子类重写模板方法

  • 应用

    Spring IOC容器加载

命令模式:

专业术语:
Command:命令
ConcreteCommand:具体的命令
Invoker:调用者
Receiver:接受者
在这里插入图片描述

案例

​ 需求:万能遥控器的制作
在这里插入图片描述

注意事项和细节

将发起请求的对象与执行请求的对象解耦
容易实现对请求的撤销和重做
空命令也是一种设计模式,它为我们省去了判空的操作

命令模式不足:

​ 可能导致某些系统有过多的具体命令类,增加了系统的复杂度

​ 与外观模式相似:都是将多个功能聚合在一起
​ 外观模式更多适用于维护;命令模式更多应用于设计;

应用

Spring框架中的JdbcTemplate类
容易设计一个命令队列。只要把命令对象放到列队,就可以多线程的执行命令
界面的一个按钮都是一条命令、模拟 CMD(DOS 命令)订单的撤销/恢复、触发- 反馈机制

备忘录模式

  • 术语

    Memento:备忘录
    originator:发起者
    Caretaker:守护者

在这里插入图片描述

应用:

事务回滚
游戏的存档
Selenium动态解析资源树

注意事项和细节
  • 给用户提供了一种可以恢复状态的机制,可以使用户能够比较方便地回到某个历史的状态
  • 实现了信息的封装,使得用户不需要关心状态的保存细节
注意:

如果类的成员变量过多,势必会占用比较大的资源,而且每一次保存都会消耗一定的内存

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值