抽象类体现的是一种模板模式的设计,抽象类作为多个子类的通用模板,子类在抽象类的基础上进行扩展、改造、但子类总体上会保留抽象类的行为方式。
package 设计模式;
public class TestTemple {
public static void main(String[] args) {
new SubTemple().spendTime();
}
}
// 计算代码的执行时间,因为代码是不确定的定义为抽象部分
abstract class Temple {
// long startTime;
// long endTime;
public abstract void code();
public void spendTime() {
long starttime = System.currentTimeMillis();
code();
long endTime = System.currentTimeMillis();
long d = endTime - starttime;
System.out.println("代码执行时间为:" + d);
}
}
// 写一个子类来继承抽象类
class SubTemple extends Temple {
public void code() {
boolean flag = false;
for (int i = 2; i < 100000; i++) {
for (int j = 2; j <= Math.sqrt(i); j++) {
if (i % j == 0) {
flag = true;
break;
}
}
if (!flag) {
System.out.println(i);
}
flag = false;
}
}
}
解决问题
当功能内部一部分实现是确定的,一部分实现是不确定的这是可以把不确定的部分暴露出去,让子类实现。
编写一个抽象父类,父类提供了多个子类的通用方法,并把一个或多个方法留给其子类实现,就是一种模板模式