您好,登錄后才能下訂單哦!
本篇文章為大家展示了怎么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è)資訊頻道。
免責(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)容。