舉例講解Java設(shè)計(jì)模式編程中模板方法模式的運(yùn)用實(shí)例
模板方法模式定義為:
在一個(gè)方法中定義了一個(gè)算法的骨架或者步驟,而將一些步驟延遲到子類中去實(shí)現(xiàn)。模板方法使得子類可以在不改變算法結(jié)構(gòu)的情況下,重新定義算法中的某一些步驟。
模板方法在基類中定義了一個(gè)操作的流程順序,能夠保證該步驟按序進(jìn)行,有一些步驟的具體實(shí)現(xiàn)在基類中已經(jīng)聲明,而將一些變化的步驟的具體實(shí)現(xiàn)交給了子類去實(shí)現(xiàn),從而就達(dá)到了延遲一些步驟到子類中,模板方法一個(gè)最大的好處就是能夠設(shè)定一個(gè)業(yè)務(wù)流程能夠按照一定嚴(yán)格的順序執(zhí)行,控制了整個(gè)算法的執(zhí)行步驟。
這個(gè)方法將算法定義成一組步驟,其中凡是想讓子類進(jìn)行自定義實(shí)現(xiàn)的步驟,均定義為抽象方法。抽象基類的特點(diǎn)是,一般將模板方法設(shè)置為final,這樣防止子類覆蓋該算法的步驟,將一些相同的操作或步驟直接在基類中實(shí)現(xiàn),將一些變化的步驟設(shè)置為抽象由子類去完成。
Java實(shí)現(xiàn)示例
類圖:

/**
* 業(yè)務(wù)流程模板,提供基本框架
*/
public abstract class BaseTemplate {
public abstract void part1();
public abstract void part2();
public abstract void part3();
//這里為了嚴(yán)格實(shí)驗(yàn)結(jié)果,使用final不可被重寫
public final void useTemplateMethod() {
part1();
part2();
part3();
}
}
/**
* 模板實(shí)現(xiàn)方式1
*/
public class TemplateMethod extends BaseTemplate {
@Override
public void part1() {
System.out.println("模板方法1");
}
@Override
public void part2() {
System.out.println("模板方法2");
}
@Override
public void part3() {
System.out.println("模板方法3");
}
}
/**
* 模板實(shí)現(xiàn)方式2
* @author stone
*
*/
public class TemplateMethod2 extends BaseTemplate {
@Override
public void part1() {
System.out.println("模板方法11");
}
@Override
public void part2() {
System.out.println("模板方法22");
}
@Override
public void part3() {
System.out.println("模板方法33");
}
}
public class Test {
public static void main(String[] args) {
BaseTemplate tm = new TemplateMethod();
tm.useTemplateMethod();
System.out.println("");
BaseTemplate tm2 = new TemplateMethod2();
tm2.useTemplateMethod();
}
}
打?。?/p>
模板方法1 模板方法2 模板方法3 模板方法11 模板方法22 模板方法33
相關(guān)文章
使用maven如何將項(xiàng)目中的test代碼打包進(jìn)jar中
這篇文章主要介紹了使用maven如何將項(xiàng)目中的test代碼打包進(jìn)jar中,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-03-03
mybatis一級(jí)緩存和二級(jí)緩存的區(qū)別及說(shuō)明
這篇文章主要介紹了mybatis一級(jí)緩存和二級(jí)緩存的區(qū)別及說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-11-11
Java 基礎(chǔ):string中的compareTo方法
這篇文章主要介紹了Java 基礎(chǔ):string中的compareTo方法,文章圍繞string中的compareTo方法的相關(guān)資料展開(kāi)文章詳細(xì)內(nèi)容,希望對(duì)待大家有所幫助2021-12-12
Spring通過(guò)配置文件管理Bean對(duì)象的方法
這篇文章主要介紹了Spring通過(guò)配置文件管理Bean對(duì)象的相關(guān)知識(shí),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-07-07
Spring Security CsrfFilter過(guò)濾器用法實(shí)例
這篇文章主要介紹了Spring Security CsrfFilter過(guò)濾器用法實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-11-11
Java集合框架迭代器Iterator實(shí)現(xiàn)原理解析
這篇文章主要介紹了Java集合框架迭代器Iterator實(shí)現(xiàn)原理解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-08-08
java Hibernate 一對(duì)多自身關(guān)聯(lián)問(wèn)題
formBean在提交表單的時(shí)候,域中數(shù)據(jù)庫(kù)在下一次中仍然保留引起的,struts formBean 默認(rèn)的scope為session,手動(dòng)設(shè)置為request,就好了2008-07-07

