首页 > 编程语言 >JAVA 模板设计模式

JAVA 模板设计模式

时间:2022-11-07 19:39:30浏览次数:36  
标签:JAVA void System protected println 设计模式 模板 out


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

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

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

标签:JAVA,void,System,protected,println,设计模式,模板,out
From: https://blog.51cto.com/u_15753094/5831049

相关文章

  • JAVA base64 工具类
    importjava.io.UnsupportedEncodingException;importjava.util.Iterator;importjava.util.Map;importjava.util.Set;importjava.util.SortedMap;publicclassBase64Ut......
  • JAVA 接口签名sign生成 工具类
    importorg.springframework.util.StringUtils;importjava.util.Map;importjava.util.Random;importjava.util.TreeMap;/***@Author:JCccc*@CreateTime:2018-10-30......
  • LG P4717 【模板】快速莫比乌斯/沃尔什变换 (FMT/FWT)
    \[C_k=\sum_{i|j=k}A_iB_j\]这样的或卷积可以做一次\(\text{FWT}\),把数组变为\(a_i=\sum_{j\subseteqi}A_i\),也就是子集和的形式,然后就可以对应位相乘了变回去的......
  • 23 种设计模式C++实现
    设计模式的分类总体来说设计模式分为三大类:创建型模式,共五种:​​单例模式​​、​​原型模式​​、​​工厂方法模式​​、​​抽象工厂模式​​、​​建造者模式​​。结构......
  • 设计模式(十八)桥接模式 C++
    桥接模式即将抽象部分与它的实现部分分离开来,使他们都可以独立变化。桥接模式将继承关系转化成关联关系,它降低了类与类之间的耦合度,减少了系统中类的数量,也减少了代码量。桥......
  • Java-SSRF
    漏洞分析原理:服务端提供了从其他服务器应用获取数据的功能且没有对目标地址做过滤与限制。大部分的web服务器架构中,web服务器自身都可以访问互联网和服务器所在的内网......
  • JavaScript之数组高阶API—reduce()
    一文搞懂JavaScript数组中最难的数组API——reduce()前面我们讲了数组的一些基本方法,今天给大家讲一下数组的reduce(),它是数组里面非常重要也是比较难的函数,那么这篇文章......
  • JAVA MD5加密工具类
     importjava.io.UnsupportedEncodingException;importjava.security.MessageDigest;importjava.security.NoSuchAlgorithmException;/***@Author:JCccc*@CreateTim......
  • JAVA 责任链设计模式
    这次介绍责任链模式,采用最普遍的请假例子来编码实现。先给列出个模拟的需求,一个人请假,调用一个接口,传入的参数是他请假的天数。然后,请假的天数---->如果小于2天,由直属领导......
  • JAVA回调函数简单讲解 CallBack
    回调,其实就是有个回应的那种感觉。那么,接下来,我们就用消息推送的场景,简简单单地讲解下回调函数的使用。直接看代码,先创建一个回调接口,MessageCallBack/***@Author:JCccc......