溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

怎么Java項(xiàng)目中使用模板方法模式

發(fā)布時(shí)間:2020-12-01 17:09:04 來源:億速云 閱讀:300 作者:Leah 欄目:編程語言

本篇文章為大家展示了怎么Java項(xiàng)目中使用模板方法模式,內(nèi)容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細(xì)介紹希望你能有所收獲。

模擬抽象類:

/**
* 模板方法模式的模板框架(以去銀行辦理業(yè)務(wù)為例)
* @description:
*/
public abstract class TempletBankFrame {
/* 比如:去柜臺辦理銀行卡業(yè)務(wù)* */
public final void handleBankCard() {
/* 第一步:進(jìn)入銀行大廳取號* */
takeNumber();
/* 第二步:填寫辦理業(yè)務(wù)的相關(guān)單據(jù)* */
if(!isNeedThisMethod()){//特殊情況可以添加判斷,如我之前有填寫好單子,那今天就不必再填寫了
writeBill();
}
/* 第三步:等待工作人員叫號* */
waitCall();
/* 第四步:辦理業(yè)務(wù)* */
handleCard();
}
/* 取號步驟是不需要更改的,所以我們用private修飾* */
private void takeNumber() {
  System.out.println("辦理銀行業(yè)務(wù)請取號!");
}
/* 辦理的業(yè)務(wù)不同,填寫的內(nèi)容不同,所以我們用protected修飾,讓子類去處理具體業(yè)務(wù)* */
protected abstract void writeBill();
/* 等待叫號步驟也是不需要更改的,所以我們用private修飾* */
private void waitCall() {
  System.out.println("辦理銀行業(yè)務(wù)請取號!");
}
/* 辦理的業(yè)務(wù)不同,用protected修飾,讓子類去處理具體業(yè)務(wù)* */
protected abstract void handleCard();
/*定義一個(gè)鉤子方法:由抽象類聲明并實(shí)現(xiàn),而子類會加以擴(kuò)展。通常抽象類給出的實(shí)現(xiàn)是一個(gè)空實(shí)現(xiàn),作為方法的默認(rèn)實(shí)現(xiàn)。**/
protected abstract boolean isNeedThisMethod();
}

具體實(shí)現(xiàn)類:如辦理取錢

/**
* 辦理取錢業(yè)務(wù)
* @description:
*/
public class GetMoney extends TempletBankFrame {
@Override
protected void writeBill() {
  System.out.println("我在填寫取錢的單據(jù)!");
}
@Override
protected void handleCard() {
  System.out.println("我要取500萬大洋");
}
@Override
protected boolean isNeedThisMethod() {
  System.out.println("我已經(jīng)填寫過單子,今天就直接等待叫號了吧!");
  return true;
}
}

具體實(shí)現(xiàn)類:如我是去辦銀行卡

/**
* 辦理銀行卡
* @description:
*/
public class TackCard extends TempletBankFrame {
@Override
protected void writeBill() {
  System.out.println("我填寫的是辦理銀行卡單據(jù)");
}
@Override
protected void handleCard() {
  System.out.println("我在辦卡,即將完成!");
}
@Override
protected boolean isNeedThisMethod() {
  return false;
}
}

測試類

/**
* 模板方法模式測試類
* @description:
*/
public class Test {
public static void main(String[] args) {
GetMoney money=new GetMoney();
money.handleBankCard();//調(diào)用模板中的辦理業(yè)務(wù)方法
System.out.println("———–分隔線—————-");
TackCard card=new TackCard();
card.handleBankCard();
}
}

最后的輸出結(jié)果:

辦理銀行業(yè)務(wù)請取號!
我已經(jīng)填寫過單子,今天就直接等待叫號了吧!
辦理銀行業(yè)務(wù)請取號!
我要取500萬大洋
———–分隔線—————-
辦理銀行業(yè)務(wù)請取號!
我填寫的是辦理銀行卡單據(jù)
辦理銀行業(yè)務(wù)請取號!
我在辦卡,即將完成!

上述內(nèi)容就是怎么Java項(xiàng)目中使用模板方法模式,你們學(xué)到知識或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識儲備,歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI