定义和简单实例
模板方法使子类可以在不改变一个算法结构的情况下,重新定义算法中某些特定步骤的实现。下面是简单示例:
public abstract class AbstractClass {
public final void templateMethod() {
primitiveOperation1();
primitiveOperation2();
}
public abstract void primitiveOperation1();
public abstract void primitiveOperation2();
}
public class ConcreteClass extends AbstractClass {
public void primitiveOperation1() {
System.out.println("Concrete implementation of operation1");
}
public void primitiveOperation2() {
System.out.println("Concrete implementation of operation2");
}
}
实现步骤的详细解析
模板方法包含以下几个步骤:
1、建立抽象基类,定义模板方法。模板方法定义了算法的步骤,并按照顺序来执行。模板方法通常被声明为final,以防止子类改变模板方法中的算法框架。
public abstract class AbstractClass {
// The "template method"
public final void templateMethod() {
primitiveOperation1();
primitiveOperation2();
}
...
}
2、模板方法调用抽象操作以及其他方法。除了抽象操作,模板方法还可以调用(钩子)其他方法。如果子类不能提供钩子方法的实现,它的默认行为就是什么也不做。
public abstract class AbstractClass {
...
// A "hook" method
protected void hookMethod() {
// Empty by default
}
}
3、在子类中实现抽象操作。子类为抽象操作提供具体实现,这样每个子类定义了如何执行算法的一部分。
public class ConcreteClass extends AbstractClass {
public void primitiveOperation1() {
...
}
public void primitiveOperation2() {
...
}
}
织梦狗教程
本文标题为:Java模板方法讲解
基础教程推荐
猜你喜欢
- Java使用EasyExcel进行单元格合并的问题详解 2023-01-18
- 一文了解Java 线程池的正确使用姿势 2023-06-17
- 全局记录Feign的请求和响应日志方式 2023-01-09
- Java File类的概述及常用方法使用详解 2023-05-18
- 用java实现扫雷游戏 2022-12-06
- Java去掉小数点后面无效0的方案与建议 2023-02-18
- Project Reactor源码解析publishOn使用示例 2023-04-12
- 工厂方法在Spring框架中的运用 2023-06-23
- JVM分析之类加载机制详解 2023-04-06
- SpringBoot配置文件中密码属性加密的实现 2023-03-11