JAVA 模板设计模式

简介: JAVA 模板设计模式

今天来介绍下一个我觉得蛮不错的设计模式(比较容易应用于业务场景),它就是---模板设计模式。


OK,我们直接看代码:


模板模式,那当然我们需要建一个模板先,建一个抽象类,VehicleControlModel.java:


(这里我们使用一个不同车辆进行不同指令远程的业务场景)


/**
 * @Author : JCccc
 * @CreateTime : 2019-1-14
 * @Description :
 * @Point: Keep a good mood
 **/
/**
 * 汽车指令控制模板
 */
public abstract class VehicleControlModel {
        /**
         * 启动发动机
         */
        protected abstract void startEngine();
        /**
         * 关闭发动机
         */
        protected abstract void shutDownEngine();
        /**
         * 打开空调
         */
        protected abstract void openAC();
        /**
         * 关闭空调
         */
        protected abstract void closeAC();
        /**
         *
         */
         public final void excet(){
            //启动发动机
             this.startEngine();
            //关闭发动机
             this.shutDownEngine();
            //开启空调
            this.openAC();
            //关闭空调
            this.closeAC();
        }
    }


有了模板,接下来创建几个集成这个抽象类模板的类,也就是所谓的不同的车:


第一辆车,


/**
 * @Author : JCccc
 * @CreateTime : 2019-1-14
 * @Description :
 * @Point: Keep a good mood
 **/
public class Audi extends VehicleControlModel {
    @Override
    protected void startEngine() {
        System.out.println("奥迪   启动发动机");
    }
    @Override
    protected void shutDownEngine() {
        System.out.println("奥迪  关闭发动机");
    }
    @Override
    protected void openAC() {
        System.out.println("奥迪  空调开启");
    }
    @Override
    protected void closeAC() {
        System.out.println("奥迪  空调关闭");
    }
}


第二辆车:


/**
 * @Author : JCccc
 * @CreateTime : 2019-1-14
 * @Description :
 * @Point: Keep a good mood
 **/
public class BMW extends VehicleControlModel {
    @Override
    protected void startEngine() {
        System.out.println("宝马  启动发动机              ");
    }
    @Override
    protected void shutDownEngine() {
        System.out.println("宝马  关闭发动机              ");
    }
    @Override
    protected void openAC() {
        System.out.println("宝马  空调开启");
    }
    @Override
    protected void closeAC() {
        System.out.println("宝马  空调关闭");
    }
}


第三辆车:


/**
 * @Author : JCccc
 * @CreateTime : 2019-1-14
 * @Description :
 * @Point: Keep a good mood
 **/
public class Yamaha  extends   VehicleControlModel{
    @Override
    protected void startEngine() {
        System.out.println("雅马哈  启动发动机");
    }
    @Override
    protected void shutDownEngine() {
        System.out.println("雅马哈  关闭发动机");
    }
    @Override
    protected void openAC() {
        System.out.println("雅马哈  空调开启");
    }
    @Override
    protected void closeAC() {
        System.out.println("雅马哈  空调关闭");
    }
}


好了,模板模式大体已经完成了。可以看到,我们先是根据不同车都能进行远程控制这个一个特性,抽离出来,建了一个抽象类(也就是指令控制模板);然后再是创建不同的车对应类去继承该模板,然后重写模板里面的方法。


可能到此,你可能还是没有发现这个模板模式有啥好的,那么我们继续看看怎么调用:


我们创建一个测试类,ControlClient.java :


/**
 * @Author : JCccc
 * @CreateTime : 2019-1-14
 * @Description :
 * @Point: Keep a good mood
 **/
public class ControlClient {
    public static void main(String[] args) {
        VehicleControlModel Audi_car=new Audi();
        Audi_car.excet();
        VehicleControlModel BWM_car=new BMW();
        BWM_car.excet();
        VehicleControlModel Yamaha_car=new Yamaha();
        Yamaha_car.excet();
    }
}


可以从代码里发现,我们是通过模板创建不同的车,指向对应车的类。


然后统一调用模板里面的统一车控方法,再通过this去指向的类去找不同的车自己继承模板重写的实现方法。


好了,模板设计模式的应用简要介绍就到此了,可以理解后自己再扩展下。

相关文章
|
14天前
|
设计模式 前端开发 搜索推荐
前端必须掌握的设计模式——模板模式
模板模式(Template Pattern)是一种行为型设计模式,父类定义固定流程和步骤顺序,子类通过继承并重写特定方法实现具体步骤。适用于具有固定结构或流程的场景,如组装汽车、包装礼物等。举例来说,公司年会节目征集时,蜘蛛侠定义了歌曲的四个步骤:前奏、主歌、副歌、结尾。金刚狼和绿巨人根据此模板设计各自的表演内容。通过抽象类定义通用逻辑,子类实现个性化行为,从而减少重复代码。模板模式还支持钩子方法,允许跳过某些步骤,增加灵活性。
|
2月前
|
设计模式 消息中间件 搜索推荐
Java 设计模式——观察者模式:从优衣库不使用新疆棉事件看系统的动态响应
【11月更文挑战第17天】观察者模式是一种行为设计模式,定义了一对多的依赖关系,使多个观察者对象能直接监听并响应某一主题对象的状态变化。本文介绍了观察者模式的基本概念、商业系统中的应用实例,如优衣库事件中各相关方的动态响应,以及模式的优势和实际系统设计中的应用建议,包括事件驱动架构和消息队列的使用。
|
2月前
|
设计模式 Java 数据库连接
Java编程中的设计模式:单例模式的深度剖析
【10月更文挑战第41天】本文深入探讨了Java中广泛使用的单例设计模式,旨在通过简明扼要的语言和实际示例,帮助读者理解其核心原理和应用。文章将介绍单例模式的重要性、实现方式以及在实际应用中如何优雅地处理多线程问题。
46 4
|
3月前
|
搜索推荐 Java 数据库连接
Java|在 IDEA 里自动生成 MyBatis 模板代码
基于 MyBatis 开发的项目,新增数据库表以后,总是需要编写对应的 Entity、Mapper 和 Service 等等 Class 的代码,这些都是重复的工作,我们可以想一些办法来自动生成这些代码。
47 6
|
3月前
|
设计模式 Java 程序员
[Java]23种设计模式
本文介绍了设计模式的概念及其七大原则,强调了设计模式在提高代码重用性、可读性、可扩展性和可靠性方面的作用。文章还简要概述了23种设计模式,并提供了进一步学习的资源链接。
64 0
[Java]23种设计模式
|
2月前
|
设计模式 JavaScript Java
Java设计模式:建造者模式详解
建造者模式是一种创建型设计模式,通过将复杂对象的构建过程与表示分离,使得相同的构建过程可以创建不同的表示。本文详细介绍了建造者模式的原理、背景、应用场景及实际Demo,帮助读者更好地理解和应用这一模式。
|
3月前
|
算法 Java Linux
java制作海报四:java BufferedImage 转 InputStream 上传至OSS。png 图片合成到模板(另一个图片)上时,透明部分变成了黑色
这篇文章主要介绍了如何将Java中的BufferedImage对象转换为InputStream以上传至OSS,并解决了png图片合成时透明部分变黑的问题。
143 1
|
3月前
|
设计模式 监控 算法
Java设计模式梳理:行为型模式(策略,观察者等)
本文详细介绍了Java设计模式中的行为型模式,包括策略模式、观察者模式、责任链模式、模板方法模式和状态模式。通过具体示例代码,深入浅出地讲解了每种模式的应用场景与实现方式。例如,策略模式通过定义一系列算法让客户端在运行时选择所需算法;观察者模式则让多个观察者对象同时监听某一个主题对象,实现松耦合的消息传递机制。此外,还探讨了这些模式与实际开发中的联系,帮助读者更好地理解和应用设计模式,提升代码质量。
Java设计模式梳理:行为型模式(策略,观察者等)
|
3月前
|
Java
Java PDF模板生成PDF
Java PDF模板生成PDF
79 1
|
4月前
|
存储 设计模式 安全
Java设计模式-备忘录模式(23)
Java设计模式-备忘录模式(23)