模板方法模式


模板方法模式作为一个行为模式,他的目的在于从顶层逻辑中封装一些有顺序的抽象方法的集合,形成一种逻辑骨架,然后用子类实现,且子类对象调用模板封装的方法时与其定义的顺序有关

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修饰,防止被篡改