不要将设计模式想的遥不可及,好像高手才会使用的东西,事实上若是您在下手写程序以前,能稍稍对程序作个分析规划,或多或少都会用到一些模式了,模式不是教条,它只是前人的经验成果,而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