[设计模式]-行为型-模板方法模式
...大约 2 分钟
[设计模式]-行为型-模板方法模式
概念梳理
场景分析
1.抽象类最佳实践-模板设计模式
抽象类的体现是一种模板模式的设计,抽象类作为多个子类的通用模板,子类在抽象类的基础上进行扩展、改造,但子类总体上会保留抽象类的行为方式
模板设计模式能解决的问题:
1)场景分析:当功能内部一部分实现是确定的、一部分实现是不确定的,可以把不确定的部分暴露出去让子类去对应实现
2)实现分析:编写一个抽象父类,父类提供了多个子类的通用方法,并把一个或者多个方法留给子类实现
需求分析
1)有多个类,完成不同的任务job
2)要求统计得到各自完成任务的时间
3)编程实现 TemplateDemo.java
实现思路
1)定义一个TaskTemplate类(定义抽象方法模板job)
2)定义多个子类继承TaskTamplate,并重写job方法完成各自的任务执行操作
public class TemplateDemo {
public static void main(String[] args) {
TaskA taskA = new TaskA();
taskA.job();
taskA.otherJob();
TaskB taskB = new TaskB();
taskB.job();
TaskC taskC = new TaskC();
taskC.job();
}
}
// 1.定义抽象模板类
abstract class TaskTemplate{
// 定义公共抽象方法
public void job(){
System.out.println("模板提供的工作方法");
}
}
// 2.定义多个类继承TaskTemplate重写job实现自定义业务逻辑
class TaskA extends TaskTemplate{
public void job(){
// 模拟工作计时(System.currentTimeMillis()获取当前系统时间毫秒数)
long duration = 100l;
System.out.println("TaskA 耗时" + duration);
}
// 子类自定义其他业务逻辑操作
public void otherJob(){
System.out.println("接其他活中....");
}
}
class TaskB extends TaskTemplate{
public void job(){
// 模拟工作计时(System.currentTimeMillis()获取当前系统时间毫秒数)
long duration = 2000l;
System.out.println("TaskB 耗时" + duration);
}
}
class TaskC extends TaskTemplate{
// TaskC使用父类的job,不自定义
}
响应结果参考:
TaskA 耗时100
接其他活中....
TaskB 耗时2000
模板提供的工作方法
Powered by Waline v3.1.3