模板模式很容易理解,套个模板,然后内容自由发挥。大家都有求职写简历的时候。会从网上下一些简历模板。一般分为基本信息,个人简介,项目经历,工作经历,培训,证书等。这个就是模板。大家基本上就是在这个模板上填入个人的一些信息。
JAVA对模板模式的实现基本也是一样。先定义一个抽象类,一般在这里会两种方法。
一种是以final修饰的方法,用来明确定义这个抽象类所要完成的基本流程等一些的。这里要写成final,就是不允许其实现类对它的基本流程模板形式进行修改。
另一种是以abstract修饰的方法,用来明确实现类要完成哪些具体的工作(当然在实现时也可能不完成),而具体工作要怎么干并不进行干涉。
合在一起就是流程必须按模板的来,任务大家各自花样去实现
以下以仓库拣货出库的操作业务来具体描述一个模板模式的基本实现。
仓库的拣货出库操作一般要以拿到拣货单开始发起整个流程。包括
1,按拣货任务进行拣货
2,拣货完成后复核拣货列表(也可能不复核)
3,出库
那么就先定义一个抽象的模板类来规定好当前的流程与要完成的任务
import bean.PickDoc;
import bean.PickList;
import bean.PickTask;
public abstract class StockOutTemplate {
//按顺序完成拣货到出库的操作
public final void doExecPickTask(PickDoc doc,PickTask task,PickList list) {
//拣货
doPickup(task);
//复核
doCheck(list);
//出库
doStockOut(doc);
}
//定义拣货方法,具体实现整箱拣货或散件拣货
public abstract void doPickup(PickTask task);
//定义复核方法,具体实现扫描复核或确数复核
public abstract void doCheck(PickList list);
//定义出库方法 具体实现本部物流出库或第三方物流出库
public abstract void doStockOut(PickDoc doc);
}
然后一个具体的业务类来扩展完成具体的业务
package template;
//
// Generated by StarUML(tm) Java Add-In
//
// @ Project : Untitled
// @ File Name : StockOutImpl.java
// @ Date : 2020/4/4
// @ Author :
//
//
import bean.PickDoc;
import bean.PickList;
import bean.PickTask;
public class StockOutImpl extends StockOutTemplate {
//拣货
public void doPickup(PickTask task) {
System.out.println("进行拣货操作");
}
//复核
public void doCheck(PickList list) {
System.out.println("进行复核操作,本仓库不进行复核");
}
//出库
public void doStockOut(PickDoc doc) {
System.out.println("出库单出库操作");
}
}
最后进行调用
来源:51CTO
作者:mas199980
链接:https://blog.51cto.com/4890631/2484884