模板方法模式还是比较好理解的。大概是假如你做一件事 要分成 好几个步骤。也就是要定义好几个方法。然后这几个方法的顺序基本是固定的。只是少数方法在细节上有不同。这个时候模板方法就出来。 顾名思义。就是执行顺序固定抽象出来。也就是模板。然后具体细节通过再定义继承类再扩展。下面看例子
对照定义 执行模板里头的方法是固定的。然后有差异部分定义成抽象方法。然后具体实现就是补充这个抽象方法
总结如下
1、 模板方法模式定义了算法的步骤,将这些步骤的实现延迟到了子类。
2、 模板方法模式为我们提供了一种代码复用的重要技巧。
3、 模板方法模式的抽象类可以定义抽象方法、具体方法和钩子。
4、 为了防止子类改变算法的实现步骤,我们可以将模板方法声明为final。
比较常见的几种使用模板方法的例子
HttpServlet中的doGet,doPost,doXXX方法也是模板方法模式的一种具体样例。
java.io.InputStream, java.io.OutputStream, java.io.Reader 以及 java.io.Writer 中所有非抽象方法。
java.util.AbstractList, java.util.AbstractSet 以及 java.util.AbstractMap中所有非抽象方法。