模板模式

一个抽象类定义了执行它的方法或者模板,子类可以按照需求重写方法,但是调用是在抽象类或者父类中进行。

模板抽象类:

 1 public abstract class AbstractTemplate {
 2 
 3     abstract void init();
 4 
 5     abstract void loading();
 6 
 7     abstract void destroy();
 8 
 9     public final void make() {
10         init();
11         loading();
12         destroy();
13     }
14 }

实现模板方法样例:

 1 public class TemplateDemo extends AbstractTemplate {
 2 
 3     @Override
 4     void init() {
 5         System.out.println("init");
 6     }
 7 
 8     @Override
 9     void loading() {
10         System.out.println("loading");
11     }
12 
13     @Override
14     void destroy() {
15         System.out.println("destroy");
16     }
17 }

测试类:

1 public class Main {
2 
3     public static void main(String[] args) {
4         TemplateDemo templateDemo = new TemplateDemo();
5         templateDemo.make();
6     }
7 }

模板方法封装了不变的部分,行为由父类控制,子类只需关注具体方法的实现。

不同的实现需要不同的子类,会导致子类过多。

spring源码中大量使用了模板模式。

原文地址:https://www.cnblogs.com/avalon-merlin/p/10521765.html