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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Java中的模板设计模式是一种行为型设计模式,它允许我们定义一个算法的骨架,但允许子类为其中的一些步骤提供具体的实现。 模板设计模式由两个主要组件组成: 1. 抽象类(Abstract Class):它定义了一个模板方法,该方法提供了算法的骨架。它可以包含一个或多个抽象方法,这些方法由子类来实现。 2. 具体类(Concrete Class):它是抽象类的子类,负责实现抽象方法。 以下是一个示例代码来说明模板设计模式的用法: ```java public abstract class AbstractClass { // 模板方法 public final void templateMethod() { // 步骤一 stepOne(); // 步骤二 stepTwo(); // 步骤三 stepThree(); } // 抽象方法,由子类实现 protected abstract void stepOne(); protected abstract void stepTwo(); // 钩子方法,子类可以选择性地覆盖 protected void stepThree() { // 默认实现 } } public class ConcreteClass extends AbstractClass { @Override protected void stepOne() { // 具体实现步骤一 } @Override protected void stepTwo() { // 具体实现步骤二 } } ``` 在上面的示例中,`AbstractClass` 是抽象类,它定义了一个名为 `templateMethod()` 的模板方法,并声明了三个抽象方法 `stepOne()`、`stepTwo()` 和 `stepThree()`。`ConcreteClass` 是具体类,它继承了 `AbstractClass` 并实现了抽象方法。 通过使用模板设计模式,我们可以在抽象类中定义算法的骨架,而具体的实现可以由子类来完成。这种设计模式使得代码重用和扩展变得更加容易。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

小目标青年

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

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

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

打赏作者

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

抵扣说明:

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

余额充值