我学会了,模板方法模式

简介: 模板方法模式属于行为型模式,这个类型的设计模式总结出了 类、对象之间的经典交互方式,将类、对象的行为和使用解耦了,花式的去使用对象的行为来完成特定场景下的功能。

前言

模板方法模式属于行为型模式,这个类型的设计模式总结出了 类、对象之间的经典交互方式,将类、对象的行为和使用解耦了,花式的去使用对象的行为来完成特定场景下的功能。

模板方法模式

使用场景:在定义特定功能模板的时候,可以使用这种模式,这种模式强制性的定义了功能接口,同时也让你可以在功能接口处进行扩展操作。这种模式强制性的定义了交互行为,你必须得按照模板的来。

理解:这是一种类、对象之间的经典交互方式,将类、对象的行为和使用解耦了,很实用,但需要根据业务需求好好设计。模板方法模式一般都是在模板方法类中实现一部分功能然后再定义一部分功能接口,然后通过继承的方式去实现这部分功能接口,从而达成复用扩展的目的。模板方法是一个编程技巧,得注重设计,要清楚哪部分需要在模板方法类中实现,哪部分需要在模板方法类中定义功能接口。

namespace action_mode_02 {

    // 模板方法类:进餐
    abstract class Dining {

        private diningBefore() {
            console.log(' ================= 用餐前 ================= ')
        }

        protected abstract dining(): void

        private diningAfter() {
            console.log(' ================= 用餐后 ================= ')
        }

        startEat() {
            this.diningBefore()
            this.dining()
            this.diningAfter()
        }

    }

    // 产品类 1:肯德基
    class KFC extends Dining {
        protected dining(): void {
            console.log('肯德基:喝可乐,吃汉堡薯条')
        }
    }

    // 产品类2:自助餐
    class Buffet extends Dining {
        protected dining(): void {
            console.log('自助餐:喝饮料,吃烤肉火锅')
        }
    }


    const kfc = new KFC()
    const buffet = new Buffet()

    kfc.startEat()
    buffet.startEat()
    
}
目录
相关文章
|
消息中间件 IDE Java
阿里云spring脚手架
阿里云spring脚手架
5371 1
java.lang.OutOfMemoryError: Metaspace
java.lang.OutOfMemoryError: Metaspace
248 0
|
消息中间件 监控 Java
RocketMQ 同步发送、异步发送和单向发送,如何选择?
本文详细分析了 RocketMQ 中同步发送、异步发送和单向发送三种消息发送方式的原理、优缺点及适用场景。同步发送可靠性高但延迟较大,适合订单系统等场景;异步发送非阻塞且延迟低,适用于实时数据处理等场景;单向发送高效但可靠性低,适用于日志收集等场景。文章还提供了示例代码和核心源码分析,帮助读者更好地理解每种发送方式的特点。
2560 4
|
SQL 缓存 关系型数据库
SQL为什么不建议执行多表关联查询
本文探讨了SQL中不建议执行多表关联查询的原因,特别是MySQL与PG在多表关联上的区别。MySQL仅支持嵌套循环连接,而不支持排序-合并连接和散列连接,因此在多表(超过3张)关联查询时效率较低。文章还分析了多表关联查询与多次单表查询的效率对比,指出将关联操作放在Service层处理的优势,包括减少数据库计算资源消耗、提高缓存效率、降低锁竞争以及更易于分布式扩展等。最后,通过实例展示了如何分解关联查询以优化性能。
505 0
|
设计模式 算法 安全
设计模式——模板模式
模板方法模式、钩子方法、Spring源码AbstractApplicationContext类用到的模板方法
设计模式——模板模式
|
Java
springboot建站脚手架
springboot建站脚手架
458 0
|
监控 Java 持续交付
如何搭建漂亮的 SpringBoot 脚手架?
【10月更文挑战第1天】在快速迭代的软件开发环境中,一个高效、美观且易于维护的 SpringBoot 脚手架是项目成功的关键。本文将详细介绍如何搭建一个既实用又漂亮的 SpringBoot 脚手架,帮助你在工作和学习中提升开发效率。
2587 0
|
XML Java API
网站是怎么屏蔽脏话的呢:简单学会SpringBoot项目敏感词、违规词过滤方案
一个社区最重要的就是交流氛围与审查违规,而这两者都少不了对于敏感词进行过滤的自动维护措施。基于这样的措施,我们才能基本保证用户在使用社区的过程中,不至于被敏感违规词汇包围,才能够正常的进行发布帖子和评论,享受美好的社区氛围。目前,对于 springboot 项目也有较为成熟的敏感词过滤方案。
1652 0
网站是怎么屏蔽脏话的呢:简单学会SpringBoot项目敏感词、违规词过滤方案
|
缓存 Java Apache
Java Bean Copy框架性能对比
一、问题分析 背景 相同server机器上的相同方法在方法调用链任何参数都一致的情况消耗时间差别非常大,举例说明,类A有方法demo(), 通过分析发现同一台机器(也是一个jvm进程)对该方法的两次调用消耗时间竟然有200ms的差距。
14057 50
|
SQL Java 数据库连接
MyBatis(九) resultMap的关联方式实现多表查询
MyBatis_resultMap 的关联方式实现多表查询(多对一)
MyBatis(九)   resultMap的关联方式实现多表查询

热门文章

最新文章