設(shè)計(jì)模式(一)TemplateMethod模板方法模式

有人說講講設(shè)計(jì)模式匈辱,自己掌握的也不是很好缔刹,有些概念我給大家背背書球涛,說說自己的理解,和大家一起學(xué)習(xí)一下吧校镐。

模板模式

背書中:模板方法模式亿扁,定義一個(gè)操作流程框架,將中間一些步驟放到子類實(shí)現(xiàn)鸟廓。
書背完了从祝,先舉個(gè)栗子吧,再來說說自己的理解引谜。

先舉個(gè)栗子

高考剛過去1個(gè)月吧牍陌,就拿高考閱卷說吧(栗子,并不真實(shí))员咽,假設(shè)現(xiàn)在寫個(gè)程序閱卷程序毒涧,對(duì)于理綜卷來說,科目分為物理贝室、化學(xué)链嘀、生物,題型有選擇題档玻、填空題怀泊、解答題(假設(shè)的),閱卷的流程我們分成核對(duì)選擇误趴、核對(duì)填空霹琼、核對(duì)解答三個(gè)步驟,對(duì)于填空來說凉当,每個(gè)空填固定的答案枣申,我們假設(shè)核對(duì)標(biāo)準(zhǔn)是一樣的,對(duì)于選擇看杭,物理是不定項(xiàng)選擇忠藤,化學(xué)是單項(xiàng)選擇(至少我們那時(shí)候高考是這樣的,現(xiàn)在不知道)楼雹,所以說對(duì)于選擇模孩、解答尖阔,三個(gè)科目的核對(duì)標(biāo)準(zhǔn)應(yīng)該是不一樣的,按照這個(gè)假設(shè)榨咐,我們來寫寫代碼:

package edu.design.pattern;

/**
 * @Description: .
 * @Author: ZhaoWeiNan .
 * @CreatedTime: 2017/7/14 .
 * @Version: 1.0 .
 */
public class TemplateMethodDemo {

    public static void main(String[] args){
        //化學(xué)科目
        Examination chemistryExamination = new ChemistryExamination("化學(xué)");
        //物理科目
        Examination physicsExamination = new PhysicsExamination("物理");

        //化學(xué)閱卷
        chemistryExamination.mark();
        //物理閱卷
        physicsExamination.mark();
    }
}


abstract class Examination{

    //科目
    private String subject;

    public Examination(String subject) {
        this.subject = subject;
    }

    //定義一個(gè)閱卷流程 對(duì)試卷打分
    public void mark(){
        //計(jì)算三個(gè)題型的得分介却,得出總分
        int choice = markChoice();
        int blank = markBlank();
        int answer = markAnswer();
        System.out.println("這個(gè)考生" + subject + "選擇題得分為:" + choice);
        System.out.println("這個(gè)考生" + subject + "填空題得分為:" + blank);
        System.out.println("這個(gè)考生" + subject + "解答題得分為:" + answer);
        System.out.println("這個(gè)考生" + subject + "總得分為:" + (choice + blank + answer));
    }

    //核對(duì)選擇題,因?yàn)槲锢砜樽隆⒒瘜W(xué)齿坷、生物的核對(duì)標(biāo)準(zhǔn)不一樣,放到子類中去實(shí)現(xiàn)
    public abstract int markChoice();

    //核對(duì)填空題
    public int markBlank(){
        //模擬填空打分数焊,因?yàn)樘羁蘸藢?duì)標(biāo)準(zhǔn)都一樣永淌,放到父類中實(shí)現(xiàn)
        return 10;
    }

    //核對(duì)解答題,因?yàn)槲锢砼宥⒒瘜W(xué)遂蛀、生物的核對(duì)標(biāo)準(zhǔn)不一樣,放到子類中去實(shí)現(xiàn)
    public abstract int markAnswer();
}

class ChemistryExamination extends Examination{

    public ChemistryExamination(String subject) {
        super(subject);
    }

    //核對(duì)化學(xué)選擇題的方法
    @Override
    public int markChoice() {
        //假設(shè)有個(gè)專門針對(duì)化學(xué)選擇題很復(fù)雜的算法
        return 20;
    }

    //核對(duì)化學(xué)解答題的方法
    @Override
    public int markAnswer() {
        //假設(shè)有個(gè)專門針對(duì)化學(xué)解答題很復(fù)雜的算法
        return 25;
    }
}

class PhysicsExamination extends Examination{

    public PhysicsExamination(String subject) {
        super(subject);
    }

    //核對(duì)物理選擇題的方法
    @Override
    public int markChoice() {
        //假設(shè)有個(gè)專門針對(duì)物理選擇題很復(fù)雜的算法
        return 10;
    }

    //核對(duì)物理解答題的方法
    @Override
    public int markAnswer() {
        //假設(shè)有個(gè)專門針對(duì)物理解答題很復(fù)雜的算法
        return 15;
    }
}

栗子完了蚕愤,總結(jié)下,個(gè)人理解饺蚊,模板方法模式是把一些共用的方法放到父類中萍诱,一些不共用的方法,放到子類中去實(shí)現(xiàn)污呼, 去除一些子類中的重復(fù)代碼裕坊,很好的體現(xiàn)出了代碼的復(fù)用性。

TemplateMethod模板方法模式就為大家說到這里燕酷,歡迎大家來交流籍凝,指出文中一些說錯(cuò)的地方,讓我加深認(rèn)識(shí)苗缩。
謝謝大家饵蒂!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市酱讶,隨后出現(xiàn)的幾起案子退盯,更是在濱河造成了極大的恐慌,老刑警劉巖泻肯,帶你破解...
    沈念sama閱讀 222,183評(píng)論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件渊迁,死亡現(xiàn)場離奇詭異,居然都是意外死亡灶挟,警方通過查閱死者的電腦和手機(jī)琉朽,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,850評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來稚铣,“玉大人箱叁,你說我怎么就攤上這事墅垮。” “怎么了蝌蹂?”我有些...
    開封第一講書人閱讀 168,766評(píng)論 0 361
  • 文/不壞的土叔 我叫張陵噩斟,是天一觀的道長。 經(jīng)常有香客問我孤个,道長剃允,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,854評(píng)論 1 299
  • 正文 為了忘掉前任齐鲤,我火速辦了婚禮斥废,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘给郊。我一直安慰自己牡肉,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,871評(píng)論 6 398
  • 文/花漫 我一把揭開白布淆九。 她就那樣靜靜地躺著统锤,像睡著了一般。 火紅的嫁衣襯著肌膚如雪炭庙。 梳的紋絲不亂的頭發(fā)上饲窿,一...
    開封第一講書人閱讀 52,457評(píng)論 1 311
  • 那天,我揣著相機(jī)與錄音焕蹄,去河邊找鬼逾雄。 笑死,一個(gè)胖子當(dāng)著我的面吹牛腻脏,可吹牛的內(nèi)容都是我干的鸦泳。 我是一名探鬼主播稍计,決...
    沈念sama閱讀 40,999評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼琉苇,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼!你這毒婦竟也來了泞莉?” 一聲冷哼從身側(cè)響起鼎姐,我...
    開封第一講書人閱讀 39,914評(píng)論 0 277
  • 序言:老撾萬榮一對(duì)情侶失蹤誊垢,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后症见,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體喂走,經(jīng)...
    沈念sama閱讀 46,465評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,543評(píng)論 3 342
  • 正文 我和宋清朗相戀三年谋作,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了芋肠。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,675評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡遵蚜,死狀恐怖帖池,靈堂內(nèi)的尸體忽然破棺而出奈惑,到底是詐尸還是另有隱情,我是刑警寧澤睡汹,帶...
    沈念sama閱讀 36,354評(píng)論 5 351
  • 正文 年R本政府宣布肴甸,位于F島的核電站,受9級(jí)特大地震影響囚巴,放射性物質(zhì)發(fā)生泄漏原在。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,029評(píng)論 3 335
  • 文/蒙蒙 一彤叉、第九天 我趴在偏房一處隱蔽的房頂上張望庶柿。 院中可真熱鬧,春花似錦秽浇、人聲如沸浮庐。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,514評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽审残。三九已至,卻和暖如春斑举,著一層夾襖步出監(jiān)牢的瞬間搅轿,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,616評(píng)論 1 274
  • 我被黑心中介騙來泰國打工懂昂, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留介时,地道東北人没宾。 一個(gè)月前我還...
    沈念sama閱讀 49,091評(píng)論 3 378
  • 正文 我出身青樓凌彬,卻偏偏與公主長得像,于是被迫代替她去往敵國和親循衰。 傳聞我的和親對(duì)象是個(gè)殘疾皇子铲敛,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,685評(píng)論 2 360

推薦閱讀更多精彩內(nèi)容