必定有钩子(没有实现的方法,需要子类去实现)和实现的方法。
模板方法模式在一个方法中定义一个算法的骨架,而将一些步骤的实现延迟到子类中。模板方法使得子类可以在不改变算法结构的情况下,重新定义算法中某些步骤的具体实现。
AbstractExecutorService 中就有模板方法模式。它实现了部分方法,也留下了钩子。
submit() 就是一个模板方法,它方法体里调用的父接口 Executor 的 execute() 方法其实并没有实现,而是交给子类去实现。
Spring 中 JdbcTemplate, 就是替我们封装了一套模板,我们在使用的时候只需要写 CRUD 就可以了,并不需要去释放资源和获取数据库链接。
HttpServlet 中的 doGet,doPost 方法
java.util.Arrays 的 sort 方法
很好的实现了代码重用,可以将代码的不变部分和可变部分分离出来,写一个模板,实现不变部分,抽象不可变部分。
学了这个设计模式以后,瞬间想起以前自己想的代码,我去重构自己的代码了。模板方法模式使我们的代码干净,可读性好,代码重用性高。在 java 中,我们就是要不停的去想,去抽象,越高的抽象,你的代码写出来越更有一种艺术味。