大話設計模式筆記(八) 模板方法模式

2021-10-07 15:29:39 字數 2523 閱讀 7435

小時候數學老師的隨堂測驗,都是在黑板上抄題目,然後再作答案。寫乙個抄題目的程式。

/**

* 學生甲抄的試卷

* created by callmedevil on 2019/7/14.

*/public class test*****a

// 試題2

public void testquestion2()

}

/**

* 學生乙抄的試卷

* created by callmedevil on 2019/7/14.

*/public class test*****b

// 試題2

public void testquestion2()

}

public class test 

}

學生甲抄的試卷:

路飛在頂上戰爭之後,修煉了多久? a.3天 b.2年 c.2天 d.3年

答案:b

鳴人是第幾代火影? a.六代 b.七代 c.八代 d.九代

答案:b

學生乙抄的試卷:

路飛在頂上戰爭之後,修煉了多久? a.3天 b.2年 c.2天 d.3年

答案:a

鳴人是第幾代火影? a.六代 b.七代 c.八代 d.九代

答案:a

兩個學生抄試卷都非常類似,除了答案不同,沒什麼不一樣,這樣又容易錯,又難以維護。因此老師出乙份試卷,列印多份,讓學生填寫答案就可以了。應該把試題和答案分離,抽出乙個父類,讓兩個子類繼承它,公共的試題**寫到父類當中就行了。

/**

* 試題父類-動漫考題

* created by callmedevil on 2019/7/14.

*/public class test*****

// 試題2

public void testquestion2()

}

/**

* 學生甲抄的試卷-版本2

* created by callmedevil on 2019/7/14.

*/public class test*****a2 extends test*****

@override

public void testquestion2()

}

/**

* 學生乙抄的試卷-版本2

* created by callmedevil on 2019/7/14.

*/public class test*****b2 extends test*****

@override

public void testquestion2()

}

客戶端測試**與測試結果此處省略,同上述簡單實現。

定義乙個操作中的演算法的骨架,而將一些步驟延遲到子類中。模板方法使得子類可以不改變乙個演算法的結構即可重定義該演算法的某些特定的步驟。

* 模板方法父類-動漫考題

* created by callmedevil on 2019/7/14.

*/public abstract class test*****

// 試題2

public void testquestion2()

// 此方法的目的就是給繼承的子類重寫,因為這裡每個人的答案都是不同的

public abstract string answer1();

public abstract string answer2();

}

/**

* 學生甲抄的試卷-模板方法實現

* created by callmedevil on 2019/7/14.

*/public class test*****a3 extends test*****

@override

public string answer2()

}

/**

* 學生乙抄的試卷-模板方法實現

* created by callmedevil on 2019/7/14.

*/public class test*****b3 extends test*****

@override

public string answer2()

}

/**

* 模板方法測試

* created by callmedevil on 2019/7/14.

*/public class test3

}

測試結果是一致的,此處不再貼出。

大話設計模式學習(八) 模板方法模式

定義乙個操作中的演算法的骨架,而將一些步驟延遲到子類中。模板方法使得子類可以不改變乙個演算法的結構既可重定義該演算法的某些特定步驟 abstractclass 是抽象類,其實也就是一抽象模板,定義並實現了乙個模板方法,這個模板方法一般是乙個具體方法,它給出了乙個頂級邏輯的骨架,而邏輯的組成步驟在相應...

大話設計模式八之模板方法模式

幾年之前,那時候很流行微軟的mcse和mcsd的認證考試。於是國內就出現了血多培訓機構。大學生們為了能找到好工作都去參加這個培訓。有個哥們,不是計算機專業的,對軟體開放也算基本不懂吧,但是英文特好,於是它參加了這個培訓後,短短乙個多月,靠著背答案,竟然把mcsd的證書考出來了。乙個幾乎不會開放的人卻...

大話設計模式讀書筆記(八) 模板方法模式

public abstract class abstractclass public class concreteclass extends abstractclass override public void operation2 public class main 模板方法模式就是把不變的行為移...