模板方法模式
概念
模板方法模式,定义一个操作中的算法骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重新定义该算法的某些特定步骤。
/**
* @author : mengshuo
* @Description : 抽象模板类
*/
public abstract class SkillTemplate {
/**
* 基本方法
*/
public abstract void helloWord();
/**
* 基本方法
*/
public abstract void web();
/**
* 基本方法
*/
public abstract void bigData();
/**
* 模板方法
*/
public final void skill() {
helloWord();
web();
bigData();
}
}
/**
* @author : mengshuo
* @Description : 具体模板类 java技能
*/
public class JavaSkill extends SkillTemplate {
/**
* 实现基本方法
*/
@Override
public void helloWord() {
System.out.println("Hello Java");
}
/**
* 实现基本方法
*/
@Override
public void web() {
System.out.println("Hello JavaWeb");
}
/**
* 实现基本方法
*/
@Override
public void bigData() {
System.out.println("Hello JavaBigData");
}
}
/**
* @author : mengshuo
* @Description : 具体模板类 Go技能类
*/
public class GolangSkill extends SkillTemplate {
/**
* 实现基本方法
*/
@Override
public void helloWord() {
System.out.println("Hello Golang");
}
/**
* 实现基本方法
*/
@Override
public void web() {
System.out.println("Hello Golang");
}
/**
* 实现基本方法
*/
@Override
public void bigData() {
System.out.println("Hello GolangBigData");
}
}
/**
* @author : mengshuo
* @Description : 测试
*/
public class Test {
public static void main(String[] args) {
System.out.println("Java 模板:");
new JavaSkill().skill();
System.out.println("\nGolang 模板:");
new GolangSkill().skill();
}
}
总结
模板方法抽象类提供抽象的基本方法
和具体的模板方法
,模板方法中定义了操作逻辑,为防止恶意操作一般模板方法都加上 final 关键词,子类对基本方法进行实现实现基本方法
。