我是靠谱客的博主 开放音响,最近开发中收集的这篇文章主要介绍非零基础自学Java (老师:韩顺平) 第10章 面向对象编程(高级部分) 10.7 抽象类最佳实践 - 模板设计模式,觉得挺不错的,现在分享给大家,希望可以做个参考。
概述
非零基础自学Java (老师:韩顺平)
✈【【零基础 快速学Java】韩顺平 零基础30天学会Java】
第10章 面向对象编程(高级部分)
文章目录
- 非零基础自学Java (老师:韩顺平)
- 第10章 面向对象编程(高级部分)
- 10.7 抽象类最佳实践 - 模板设计模式
- 10.7.1 基本介绍
- 10.7.2 模板设计模式能解决的问题
- 10.7.3 最佳实践
10.7 抽象类最佳实践 - 模板设计模式
10.7.1 基本介绍
抽象类体现的就是一种模板模式的设计,抽象类作为多个子类的通用模板,子类在抽象类的基础上进行扩展、改造,但子类总体上会保留抽象类的行为方式。
10.7.2 模板设计模式能解决的问题
- 当功能内部一部分实现是确定,一部分实现是不确定的。这时可以把不确定的部分暴露出去,让子类去实现。
- 编写一个抽象父类,父类提供了多个子类的通用方法,并把一个或多个方法留给其子类实现,就是一种模板模式.
10.7.3 最佳实践
韩老师需求:
- 有多个类,完成不同的任务job
- 要求统计得到各自完成任务的时间
举个栗子
模板类
package com.dingjiaxiong.abstract_;
/**
* ClassName: Template
* date: 2022/9/3 20:19
*
* @author DingJiaxiong
*/
abstract public class Template { //抽象类
public abstract void job(); //抽象方法
public void calculateTime(){ //实现方法,调用job方法
//开始时间
long start = System.currentTimeMillis();
job(); //动态绑定机制
//结束时间
long end = System.currentTimeMillis();
System.out.println("任务执行时间" + (end - start));
}
}
AA类
package com.dingjiaxiong.abstract_;
/**
* ClassName: AA
* date: 2022/9/3 20:22
*
* @author DingJiaxiong
*/
public class AA extends Template{
@Override
public void job() { //实现抽象方法job
long num = 0;
for (int i = 0; i <= 800000; i++) {
num += i;
}
}
}
BB类
package com.dingjiaxiong.abstract_;
/**
* ClassName: BB
* date: 2022/9/3 20:23
*
* @author DingJiaxiong
*/
public class BB extends Template{
@Override
public void job() { //这里同理
long num = 0;
for (int i = 0; i <= 80000 ; i++) {
num *= i;
}
}
}
测试类
package com.dingjiaxiong.abstract_;
/**
* ClassName: TestTemplate
* date: 2022/9/3 20:23
*
* @author DingJiaxiong
*/
public class TestTemplate {
public static void main(String[] args) {
AA aa = new AA();
aa.calculateTime();
BB bb = new BB();
bb.calculateTime();
}
}
运行结果
最后
以上就是开放音响为你收集整理的非零基础自学Java (老师:韩顺平) 第10章 面向对象编程(高级部分) 10.7 抽象类最佳实践 - 模板设计模式的全部内容,希望文章能够帮你解决非零基础自学Java (老师:韩顺平) 第10章 面向对象编程(高级部分) 10.7 抽象类最佳实践 - 模板设计模式所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复