JAVA 模板设计模式

本文深入介绍了模板设计模式在车辆远程控制场景中的应用。通过抽象类VehicleControlModel定义了一套标准的车辆控制流程,包括启动和关闭发动机、空调等操作。具体实现由Audi、BMW和Yamaha等子类完成,展示了如何利用模板模式简化代码并提高复用性。

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

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

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去指向的类去找不同的车自己继承模板重写的实现方法。

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小目标青年

对你有帮助的话,谢谢你的打赏。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值