利用抽象类结合抽象方法,实现一种设计模块:模板方法设计模式,这其中也充分应用了多态的思想,示例如下,
package com.winson.OOP;
/**
* @description:抽象类和抽象方法使用方式:模板方法设计模式示例
* @date: 2020/7/9 22:30
* @author: winson
*/
public class TemplateTest {
public static void main(String[] args) {
SubTemplate subTemplate = new SubTemplate();
//子类调用父类的方法,而spendTime()中又调用了code()抽象方法,因为SubTemplate类重写了code()方法,
// 所以subTemplate类调用了spendTime()方法,而且调用了自己重写的抽象方法;
subTemplate.spendTime();
}
}
abstract class Template {
//抽象方法
public abstract void code();
//普通方法:计算某段代码话费的时间
public void spendTime() {
long startTime = System.currentTimeMillis();
//不确定的部分、易变的部分
this.code();
long endTime = System.currentTimeMillis();
System.out.println("花费的时间为:" + (endTime - startTime));
}
}
class SubTemplate extends Template {
@Override
public void code() {
//筛选1000以内的质数
for (int i = 2; i <= 1000; i++) {
boolean isFlag = true;
for (int j = 2; j < Math.sqrt(i); j++) {
if (i % j == 0) {
isFlag = false;
break;
}
}
if (isFlag) {
System.out.println(i);
}
}
}
}