文章出處

使用頻率:★★★☆☆

一、什么是模板方法模式

使用了JAVA的繼承機制,在抽象類中定義一個模板方法,該方法引用了若干個抽象方法(由子類實現)或具體方法(子類可以覆蓋重寫);

二、補充說明

其實就是JAVA的繼承以及抽象方法、重寫覆蓋的使用;

一般把模板方法定義成final避免被子類修改

三、角色

抽象模板:定義了一個模板方法和若干抽象方法和具體方法,

具體模板:繼承抽象模板類并實現抽象方法

客戶端Main

四、例子,JAVA實現

例子說明:模擬程序員的一天

抽象模板

package com.pichen.dp.behavioralpattern.templatemethod;

public abstract class Day {

    public void getUp(){
        System.out.println("get up~");
    }
    public abstract void breakfast();
    public abstract void goToWork();
    public abstract void working();
    public abstract void lunch();
    public abstract void goHome();
    public abstract void supper();
    public void sleep(){
        System.out.println("sleep~");
    }
//模板方法
public final void process(){ getUp(); breakfast(); goToWork(); working(); lunch(); working(); goHome(); supper(); sleep(); } }

具體模板

package com.pichen.dp.behavioralpattern.templatemethod;

public class ProgrammerDay extends Day{

    /**
     * @see com.pichen.dp.behavioralpattern.templatemethod.Day#breakfast()
     */
    @Override
    public void breakfast() {
        System.out.println("breakfast:noodle~");
        
    }

    /**
     * @see com.pichen.dp.behavioralpattern.templatemethod.Day#goToWork()
     */
    @Override
    public void goToWork() {
        System.out.println("goToWork:drive car~");
        
    }

    /**
     * @see com.pichen.dp.behavioralpattern.templatemethod.Day#working()
     */
    @Override
    public void working() {
        System.out.println("working: coding~");
        
    }

    /**
     * @see com.pichen.dp.behavioralpattern.templatemethod.Day#lunch()
     */
    @Override
    public void lunch() {
        System.out.println("lunch: eat rice~");
        
    }

    /**
     * @see com.pichen.dp.behavioralpattern.templatemethod.Day#goHome()
     */
    @Override
    public void goHome() {
        System.out.println("goHome: walk~");
    }

    /**
     * @see com.pichen.dp.behavioralpattern.templatemethod.Day#supper()
     */
    @Override
    public void supper() {
        System.out.println("supper: rice~");
    }

}

客戶端

package com.pichen.dp.behavioralpattern.templatemethod;

public class Main {

    public static void main(String[] args) {
        Day programmerDay = new ProgrammerDay();
        programmerDay.process();
    }
}

結果打印:

get up~
breakfast:noodle~
goToWork:drive car~
working: coding~
lunch: eat rice~
working: coding~
goHome: walk~
supper: rice~
sleep~

 


文章列表


不含病毒。www.avast.com
arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()