定义一个操作中的算法骨架,将算法的一些步骤延迟到子类中,使得子类在可以不改变该算法结构的情况下重定义该算法的某些特定步骤。
package com.strife.pattern.template;
/**
* 模板方法设计模式
*
* @author mengzhenghao
* @date 2022/6/1
*/
public class Template {
public static void main(String[] args) {
AbstractSoftwareDevelop softwareDevelop = new ConcreteAppDevelop();
softwareDevelop.templateMethod();
}
}
/** 软件开发抽象 */
abstract class AbstractSoftwareDevelop {
public void templateMethod(){
//调用基本方法
doBiz();
doProduct();
doDevelop();
doTest();
comparison();
}
protected void doBiz(){
System.out.println("需求分析");
}
protected abstract void doProduct();
protected abstract void doDevelop();
protected abstract void doTest();
/** 钩子方法 */
protected void comparison() {
}
}
/** APP开发具体类 */
class ConcreteAppDevelop extends AbstractSoftwareDevelop {
@Override
public void doProduct() {
System.out.println("输出App产品");
}
@Override
public void doDevelop() {
System.out.println("进行App开发");
}
@Override
public void doTest() {
System.out.println("进行App测试");
}
/** 覆盖钩子方法 */
@Override
protected void comparison() {
System.out.println("参加评比");
}
}