天天看小說

第152章

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

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

例:

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

publicabstractclassShowSubClassName{

/**

*這個(gè)方法的實(shí)現(xiàn),我們交給子類完成

*/

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();

}

}

第224章第1章第174章第55章第113章第216章第21章第81章第145章第153章第9章第35章第2章第109章第207章第101章第29章第128章第137章第68章第66章第26章第171章第53章第47章第45章第17章第133章第125章第196章第70章第35章第139章第169章第45章第93章第149章第131章第3章第159章第101章第184章第198章第65章第147章第130章第134章第180章第195章第135章第16章第83章第147章第161章第31章第28章第126章第56章第82章第149章第58章第41章第133章第170章第220章第70章第151章第193章第20章第180章第69章第89章第80章第168章第18章第56章第126章第139章第185章第199章第203章第179章第16章第140章第226章第176章第143章第210章第131章第211章第112章第227章第69章第102章第179章第101章第6章第85章第101章第217章
第224章第1章第174章第55章第113章第216章第21章第81章第145章第153章第9章第35章第2章第109章第207章第101章第29章第128章第137章第68章第66章第26章第171章第53章第47章第45章第17章第133章第125章第196章第70章第35章第139章第169章第45章第93章第149章第131章第3章第159章第101章第184章第198章第65章第147章第130章第134章第180章第195章第135章第16章第83章第147章第161章第31章第28章第126章第56章第82章第149章第58章第41章第133章第170章第220章第70章第151章第193章第20章第180章第69章第89章第80章第168章第18章第56章第126章第139章第185章第199章第203章第179章第16章第140章第226章第176章第143章第210章第131章第211章第112章第227章第69章第102章第179章第101章第6章第85章第101章第217章
主站蜘蛛池模板: 喀喇| 米脂县| 区。| 延边| 岳池县| 思南县| 新邵县| 永清县| 宁国市| 阿尔山市| 三门峡市| 中江县| 都兰县| 巴林右旗| 新昌县| 辰溪县| 博乐市| 鞍山市| 莱阳市| 盈江县| 潼关县| 来宾市| 腾冲县| 青铜峡市| 宝丰县| 南通市| 陵水| 台东市| 龙州县| 涞水县| 红河县| 潮安县| 邢台县| 龙川县| 赤城县| 衡东县| 白山市| 江达县| 孝昌县| 文化| 多伦县|