1 介绍
小白:大哥呀,你们培训了两天到底培训了啥呀,给我讲讲呗。
Acey:额额额,谈了谈人生,谈了谈理想,谈了谈工作室的纳新。想了解详情往里戳<a href="http://www.jianshu.com/p/1c6785f6abc3">培训日</a>
小白:哇,纳新?TW 纳新是不是特别的严呀。
Acey:不严不严,大前提是你得是个妹子。😍。其实纳新的安排使用了模板模式,将以前的纳新经历总结成一个套路,一个模板,然后套着这个模板去做。
小白:好腻害的赶脚。快给我讲讲模板模式吧。😉
模板模式:模板模式属于行为模式的一种, 定义了一个抽象模板类并编写了相应的方法,具体的实现交给子类,但方法的具体调用顺序还是由抽象类决定。
小白:这个抽象类就是一个模板吧,而里面的抽象方法呢就是具体的步骤,可以这样理解嘛?
Acey:对的
小白:那具体的调用顺序是什么意思呢?
Acey:拿纳新来说吧,纳新的具体步骤一般就是前期的宣传、宣讲会、报名、笔试面试、结果通知,而且纳新的顺序一般也是这样,所以不需要用户再去修改固有的顺序,于是就会在抽象类中定义一个调用方法,这个方法中就会按照固有的顺序去调用每一个步骤方法。
小白:还有点晕,举个栗子吧😁
2 实现
首先,先来看看类图
其中
- AbstractClass:抽象模板类
- ConcreteClass:具体的模板实现类
具体实现
第一步:创建模板抽象类
Recruit.class
//招聘抽象类
public abstract class Recruit {
//宣传
public abstract void propaganda();
//宣讲
public abstract void preach();
//报名
public abstract void signUp();
//面试
public abstract void interview();
//结果
public abstract void result();
//执行
public final void execute(){
propaganda();
preach();
signUp();
interview();
result();
}
}
第二步:具体实现类
TWRecruit.class
//TW招聘
public class TWRecruit extends Recruit{
//宣传
@Override
public void propaganda() {
System.out.println("TW宣传---");
}
//宣讲
@Override
public void preach() {
System.out.println("TW宣讲中------");
}
//报名
@Override
public void signUp() {
System.out.println("TW报名中---------");
}
//面试
@Override
public void interview() {
System.out.println("TW面试中------------");
}
//结果
@Override
public void result() {
System.out.println("TW的招聘结果---------------");
}
}
第三步:测试
MainClass.class
public class MainClass {
public static void main(String[] args) {
Recruit tw = new TWRecruit();
tw.execute();
}
}
这样整个招聘流程就跑完了。以后其它类似的招聘只需要去实现抽象的模板类,并实现相应的方法即可。
行为的调用交给父类,行为的具体实现交给子类。将公共的代码提取了出来,更加便于维护。
喜欢的话戳一下喜欢呗。
有什么建议的话希望大家能在下方回复😋
上一篇:《迭代模式 - 报告老师,我想逃课》
下一篇:《备忘录模式》(待更)