不要將設計模式想的遙不可及,好像高手纔會使用的東西,事實上若是您在下手寫程序以前,能稍稍對程序作個分析規劃,或多或少都會用到一些模式了,模式不是教條,它只是前人的經驗成果,而Gof的書則是選前人之精華持續改進而來罷了。java
Template Method模式就是一個很簡單的模式,但多是使用最普遍的模式,也許您也一直使用這樣的模式,看它的UML類結構圖就知道了。設計模式
僅僅是抽象類與具體類的關係而已,有些人常問抽象類與接口有啥區別,Template Method模式能夠提供其中一個答案例如:設計
AbstractClass.javacode
public abstract class AbstractClass { public void templateMethod() { opStep1(); opStep2(); opStep3(); } public abstract void opStep1(); public abstract void opStep2(); public abstract void opStep3(); }
ConcreteClass.java接口
public class ConcreteClass extends AbstractClass { public void opStep1() { } public void opStep2() { } public void opStep3() { } }
對於一些程序而言,咱們但願規定一些處理步驟,流程或骨架,就像上面例種的step1到step2同樣,至於流程中的step1到step3如何實例化並不作規定,而留給具體子類實現,這就是Template Method模式的目的。圖片
抽象類和接口的差異之一也正在於抽象類能夠先實現其中的一些方法,而接口則徹底規定接口。class