模板方法,见名知意,我不再啰嗦,直接上代码,代码很好理解,我觉得看代码比磨磨唧唧码那么多字强多了!
模板类(抽象类)
package com.zyh.designpatterns.com.zyh.templatemethod;
public abstract class AbstractTemplate {
/*
* 模板方法,起到模板作用
*/
public final void templateMethod()
{
abstractMethod();
hookMethod();
concreteMethod();
}
/*
* 基本方法的声明(必须实现)
*/
public abstract void abstractMethod();
/*
* 基本方法的空实现(可用于hook)
*/
public void hookMethod()
{
}
/*
* 子类不可变方法(实现一些固定的逻辑)
*/
private void concreteMethod()
{
System.out.println("抽象类中实现一些固定的逻辑");
}
}
子类去继承上边的抽象类
package com.zyh.designpatterns.com.zyh.templatemethod;
public class ConcreteTemplate extends AbstractTemplate{
/*
* 必须实现的方法
*/
@Override
public void abstractMethod() {
/* 实现一些具体的逻辑 */
System.out.println("实现一些具体的逻辑");
}
@Override
public void hookMethod() {
/* 实现一些hook逻辑或者不实现 */
System.out.println("实现一些hook逻辑或者不实现");
}
public static void main(String[] args)
{
ConcreteTemplate ct = new ConcreteTemplate();
ct.templateMethod();
}
}
运行结果
实现一些具体的逻辑
实现一些hook逻辑或者不实现
抽象类中实现一些固定的逻辑