1. 程式人生 > >模板方法設計模式

模板方法設計模式

抽象方法 發生 設計 false 。。 lis 調用 ext time

/** 模板方法設計模式:父類的普通方法依賴於一個抽象方法,而抽象方法則推遲到子類中提供實現

* 父類中的普通方法只提供通用的算法,把抽象方法暴露出去,讓子類去實現

*/
public class TestTemplate {
public static void main(String[] args) {
//匿名類對象調用其父類方法
new SubTemplate().spendTime();
}
}

abstract class Template {
//把抽象的部分暴露出來,讓子類去實現
public abstract void code();
//空參構造器
public Template(){

}
//普通方法依賴於抽象方法(也就是和抽象方法發生關系。。。)
//計算code方法的運行時間
public void spendTime() {
//system類的currentTimeMillis方法
long start = System.currentTimeMillis();
//這個方法不是抽象的,所以可以用對象來調用。同時這是個虛擬方法調用,即調用的是子類重寫的方法。
this.code();

long end = System.currentTimeMillis();
System.out.println("花費的時間是 : " + (end - start));
}
}
class SubTemplate extends Template{
public SubTemplate(){
super();
}
public void code(){
//輸出100000以內的素數
//首先假定這個數是素數
boolean flag = true;
//將這個數i作為被除數
for(int i = 2; i <= 100000;i++){
//j作為除數
for(int j = 2; j <= Math.sqrt(i); j++){
//若被除數能被除數除盡,則這個數有除了1 和 自身 以外的其他因數,所以不是素數,退出循環
if( i % j == 0){
flag = false ;
break;
}
}
//判斷這個數是不是素數,是的話就輸出
if(flag == true ){
System.out.println(i);
}
//重新假定這個數是素數
flag = true;
}
}
}

模板方法設計模式