设计模式——模板方法模式

什么是模板方法模式

Template Method模式,我的理解就是它是一种抽象类实现方法的一种升级版的设计模式。所谓模板就是将某一种工序流程方法抽象成一个统一的模板,比如说我有一个绘画的模板,我们可以选择任何一种画笔,比如我使用红笔画这个模板画出来的就是红色的,我用蜡笔那就蜡笔画出来的画。

模板方法的实现

比如这时候我们有一个流程,流程中需要调用几个工序,这几个工序的顺序是不变的,但是具体的工序是会变化的。这时候我们就可以使用模板方法模式了。

首先,我们先定义一个抽象类,这个抽象类里面有具体的模板方法和几个工序方法,工序方法是抽象方法(这个就需要子类去实现具体方法),模板方法里需要调用这几个方法比如说先是工序1然后是工序2最后是工序4。

当我们需要具体实现的时候,我们需要加一个类继承于这个抽象类并且实现它的抽象方法。

代码实现

这里我就直接使用vs在md文件里手敲了,比较简单但最重要的是思想。

首先是抽象类AbstractProcess

1
2
3
4
5
6
7
8
9
10
11
public abstract class AbstractProcess {
abstract void workOrder1();
abstract void workOrder2();
abstract void workOrder4();

void processTemplate(){
workOrder1();
workOrder2();
workOrder4();
}
}

然后是实现类代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public class MakePencilProcess extends AbstractProcess{
public MakePencilProcess(){}
@Override
void workOrder1(){
System.out.println("This is make pencil first");
}
@Override
void workOrder2(){
System.out.println("This is make pencil second");
}
@Override
void workOrder4(){
System.out.println("This is make pencil third");
}
}

最后是客户端类

1
2
3
4
5
6
7
public class Main{
public static void main(String[] args){
//里氏替换原则,更加灵活
AbstractProcess abstractProcess = new MakePencilProcess();
abstractProcess.processTemplate();
}
}

后记

这两天在看vue,突然有好多要学的现在有点不知所措,期末,练车,数据结构,设计模式,Java项目,大创,前端项目,vue,六级考试,操作系统实验。。。感觉自己野心有点太大了,慢慢来吧,不能太急。

这几天突然意识到自己缺少了很多生活的记忆,尤其是前几天肝项目的时候,让我回忆那几天生活里干了啥我已经记不清了,我觉得我不能成为那样的呆子,那不是我,那也是我以前不想成为的人。

-------------本文结束感谢阅读-------------