模板方法模式
模板方法模式作为一个行为模式,他的目的在于从顶层逻辑中封装一些有顺序的抽象方法的集合,形成一种逻辑骨架,然后用子类实现,且子类对象调用模板封装的方法时与其定义的顺序有关
AbstractTemplate.java
public abstract class AbstractTemplate {
public abstract void A();
public abstract void B();
public abstract void init();
public final void T(){
init();
A();
B();
}
}
A.java
public class A extends AbstractTemplate {
@Override
public void A() {
System.out.println("A类执行A方法");
}
@Override
public void B() {
System.out.println("A类执行B方法");
}
@Override
public void init() {
System.out.println("A类初始化");
}
}
B.java
public class B extends AbstractTemplate {
@Override
public void A() {
System.out.println("B类执行A方法");
}
@Override
public void B() {
System.out.println("B类执行B方法");
}
@Override
public void init() {
System.out.println("B类初始化");
}
}
TestTemplate.java
public class TestTemplate {
public static void main(String[] args) {
AbstractTemplate at = new A();
at.T();
at = new B();
at.T();
}
}
Run result
A类初始化
A类执行A方法
A类执行B方法
B类初始化
B类执行A方法
B类执行B方法
由此可见模板方法模式的有点在于封装不变或固定的内容,通过子类实现扩展功能,一般模板方法用final修饰,防止被篡改