模板模式就是把父类中变化的地方抽离成抽象方法供子类实现,各个抽象方法的调用时机由父类去决定。
模板类:
public abstract class Parent {
public void templateMethod() {
childDependentMethod1();
childDependentMethod2();
fixedMethod();
}
public abstract void childDependentMethod1();
public abstract void childDependentMethod2();
public void fixedMethod() {
System.out.println("fixed method");
}
}
实现类A:
public class ChildA extends Parent {
@Override
public void childDependentMethod1() {
System.out.println("realization method1 of ChildA");
}
@Override
public void childDependentMethod2() {
System.out.println("realization method2 of ChildA");
}
}
实现类B:
public class ChildB extends Parent {
@Override
public void childDependentMethod1() {
System.out.println("realization method1 of ChildB");
}
@Override
public void childDependentMethod2() {
System.out.println("realization method2 of ChildB");
}
}
测试类:
public class Test {
public static void main(String[] args) {
ChildA childA = new ChildA();
childA.templateMethod();
ChildB childB = new ChildB();
childB.templateMethod();
}
}
输出:
realization method1 of ChildA
realization method2 of ChildA
fixed method
realization method1 of ChildB
realization method2 of ChildB
fixed method
其实在Android当中,各种Activity和Fragment的封装就是这种模式,onCreate()中可以定义initView()和initData()等方法,具体实现交给子类去实现。