模板模式很容易理解,套個模板,而後內容自由發揮。你們都有求職寫簡歷的時候。會從網上下一些簡歷模板。通常分爲基本信息,我的簡介,項目經歷,工做經歷,培訓,證書等。這個就是模板。你們基本上就是在這個模板上填入我的的一些信息。java
JAVA對模板模式的實現基本也是同樣。先定義一個抽象類,通常在這裏會兩種方法。設計模式
一種是以final修飾的方法,用來明肯定義這個抽象類所要完成的基本流程等一些的。這裏要寫成final,就是不容許其實現類對它的基本流程模板形式進行修改。ide
另外一種是以abstract修飾的方法,用來明確實現類要完成哪些具體的工做(固然在實現時也可能不完成),而具體工做要怎麼幹並不進行干涉。設計
合在一塊兒就是流程必須按模板的來,任務你們各自花樣去實現code
如下以倉庫揀貨出庫的操做業務來具體描述一個模板模式的基本實現。blog
倉庫的揀貨出庫操做通常要以拿到揀貨單開始發起整個流程。包括it
1,按揀貨任務進行揀貨模板
2,揀貨完成後複覈揀貨列表(也可能不復核)class
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("出庫單出庫操做"); }
}
最後進行調用