簡體中文 | 繁體中文

大話設計模式-----第152章


我的女神上司 億萬首席,人家不要恩哼 極品夫妻 穿越之為寶寶選個爹(全) 重生之如此多嬌 亡靈法師之異界成神 器道無極 民國之鐵血少帥 焚神道 天才萌寶:絕色召喚師 我的女友是狐狸 扎鬼祕事 我做妖屍的那些年 那些過往的青春 大明官 天降佳偶之妙廚獸妃 神王的腹黑丫頭 做有擔當的共產黨員:談談共產黨員的權利與義務 小房東(下部) 籃外空心
第152章

小A:“模板方法模式有什麼目的?”

大B:“在一個方法中實現一個演算法,並將演算法中某些步驟的定義推遲,從而使得其他類可以重新定義這些步驟。在編寫一個方法的時候,考慮到演算法的某些步驟可能會有不同的實現方式,我們可能會首先定出演算法的框架。這樣,在定義方法的時候,我們可以將某些步驟定義為抽象方法,或者是將它們定義為存根方法,也可以將它們定義為某個單獨介面中的方法,這就是模板方法模式的實現。模板方法的典型例子就是排序。java.util.Collections類將sort()方法定義為一個模板方法,而將其中的比較交給使用者來實現,sort()方法所接受的List中的物件需要實現Comparator介面,這就是將實際演算法推遲並交給其它類來實現的模板方法模式。”

例:

有一個抽象類ShowSubClassName,有兩個子類SubClassA和SubClassB繼承了該抽象類,抽象類中定義的抽象方法showName()被推遲到了兩個子類中實現(分別輸出自己的classname)。

publicabstractclassShowSubClassName{

/**

*這個方法的實現,我們交給子類完成

*/

publicabstractvoidshowName();

publicvoidshow(){

showName();

}

}

publicclassSubClassAextendsShowSubClassName{

publicvoidshowName(){

System.out.println(this.getClass().getName());

}

}

publicclassSubClassBextendsShowSubClassName{

publicvoidshowName(){

System.out.println(this.getClass().getName());

}

}

publicclassTest{

publicstaticvoidmain(String[]args){

ShowSubClassNameclassA=newSubClassA();

classA.show();

ShowSubClassNameclassB=newSubClassB();

classB.show();

}

}

推薦小說