跳至主要內容

[设计模式]-行为型-模板方法模式

holic-x...大约 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