技术预研:1.钩子方法 2.抽象类 3.访问修饰符 4.final
=======================================================
模版方法:提供统一方法入口,如遇到不同的子类实现,那么由子类完成,共同方法由父类统一实现。
类图:
父类一般由抽象类完成(请注意方法修饰符)
父类:
package com.ufgov;
/**
* 抽象父类
*
* @author Gaoming
*/
public abstract class AbstractTemplate {
/**
* 模版方法
*/
public final void templateMethod() {
abstractMethod();
hookMethod();
concreteMethod();
}
/**
* 抽象方法,由子类实现
*/
protected abstract void abstractMethod();
/**
* 钩子方法
*/
protected void hookMethod() {
}
/**
* 统一实现方法
*/
private void concreteMethod() {
System.out.println("统一实现方法");
}
}
子类:
package com.ufgov;
/**
* 子类具体实现
*
* @author Gaoming
*
*/
public class ConcreteTemplate extends AbstractTemplate {
@Override
protected void abstractMethod() {
System.out.println("子类自我实现");
}
@Override
protected void hookMethod() {
System.out.println("钩子方法,子类完成具体实现");
}
}
package com.ufgov;
public class Main {
public static void main(String[] args) {
AbstractTemplate at = new ConcreteTemplate();
at.templateMethod();
}
}