模版模式

概述:抽象類定義了執(zhí)行的方式(一系列步驟或者邏輯,方案,就是一個(gè)模子),子類可以重寫父類的具體實(shí)現(xiàn),但執(zhí)行還是要使用父類的定義。

代碼:定義一個(gè)下班回家的模版(離開(kāi)公司,在路上,到家開(kāi)門)

package com.example.java8.model.template;

/**
 * 模版模式
 * 功能:回家(離開(kāi)公司--》在路上--》開(kāi)門)
 */
public abstract class GoHomeTemplate {

    /**模版方法(加final避免重寫)*/
    public final void exec(){
        this.leaveCompany();
        this.onTheWay();
        this.openDoor();
    }

    /**離開(kāi)公司*/
    public abstract void leaveCompany();

    /**在路上*/
    public abstract void onTheWay();

    /**開(kāi)門*/
    public abstract void openDoor();

}

A方法的實(shí)現(xiàn)模版

package com.example.java8.model.template;

public class AMethod extends GoHomeTemplate {
    @Override
    public void leaveCompany() {
        System.out.println("走電梯");
    }

    @Override
    public void onTheWay() {
        System.out.println("坐地鐵");
    }

    @Override
    public void openDoor() {
        System.out.println("刷門禁卡");
    }
}

B方法的實(shí)現(xiàn)模版

package com.example.java8.model.template;

public class BMethod extends GoHomeTemplate {
    @Override
    public void leaveCompany() {
        System.out.println("走樓梯");
    }

    @Override
    public void onTheWay() {
        System.out.println("開(kāi)小車");
    }

    @Override
    public void openDoor() {
        System.out.println("鑰匙開(kāi)門");
    }
}

測(cè)試

package com.example.java8.model.template;

import org.junit.Test;

public class TemplateTest {

    @Test
    public void testA(){
        GoHomeTemplate aMethod = new AMethod();
        aMethod.exec();
    }

    @Test
    public void testB(){
        GoHomeTemplate bMethod = new BMethod();
        bMethod.exec();
    }

}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容