怎么在Java中使用模板方法模式

這篇文章將為大家詳細講解有關(guān)怎么在Java中使用模板方法模式,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關(guān)知識有一定的了解。

成都創(chuàng)新互聯(lián)公司主要從事網(wǎng)站設(shè)計制作、網(wǎng)站設(shè)計、網(wǎng)頁設(shè)計、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)商洛,十年網(wǎng)站建設(shè)經(jīng)驗,價格優(yōu)惠、服務(wù)專業(yè),歡迎來電咨詢建站服務(wù):028-86922220

模式中的角色:

抽象類(AbstractClass):實現(xiàn)了模板方法,定義了算法的骨架。

具體類 (Concrete):實現(xiàn)了抽象類中抽象放,使得父類定義的算法更完整。

代碼實現(xiàn):

1:用抽象類定義流程,比如我們每天上班有個流程: 開機-->寫代碼(不同的程序員可能寫不同的代碼-->關(guān)機; 整個流程中開機和關(guān)機是相同的,只是寫代碼這個步湊不同,java程序員寫java代碼,Php程序員寫Php代碼; 我們先用一個抽象的父類定義這個流程:

public abstract class Work {

  //定義算法步湊流程
  public void workDay(){

    //1:上班開機
    openComputer();
    //2:搬磚:寫代碼
    coding();
    //3:下班關(guān)機     closeComputer();
  }

  //開機
  private final void openComputer() {
    System.out.println("到達公司,開機");
  }

  //寫代碼
  protected abstract void coding();

  //關(guān)機
  private final void closeComputer() {
    System.out.println("下班,關(guān)機");
  }

}

2:具體實現(xiàn)

Java程序員

public class JavaProgrammer extends Work {
  
  @Override
  protected void coding() {
    System.out.println("Java程序員打開Idea,寫Java代碼。。。");
  }
}

PHP程序員

public class PhpProgrammer extends Work {

  @Override
  protected void coding() {
    System.out.println("PHP程序員打開Zend Studio,寫Php代碼。。。");
  }
}

3:使用

public class TemplateMethodDemo {

  public static void main(String[] args) {
    Work javaProgrammer = new JavaProgrammer();
    javaProgrammer.workDay();
    System.out.println("================");
    Work phpProgrammer = new PhpProgrammer();
    phpProgrammer.workDay();
  }
}

運行結(jié)果

怎么在Java中使用模板方法模式

模板模式在源碼中的體現(xiàn):

1:我們每天都在使用的HttpServlet里面的service方法,service方法里面定義了調(diào)用流程,根據(jù)客戶端調(diào)用的不同方式,if else邏輯判斷調(diào)用不同的方法,比如doGet,doPost,doDelete等實現(xiàn)restful調(diào)用,具體的doGet,doPost方法實現(xiàn)我們可以在我們自己定義的Servlet中進行重寫。

怎么在Java中使用模板方法模式

2:Mybatis框架中也有一些經(jīng)典實用,比如BaseExecutor類,它是一個基礎(chǔ)的SQL執(zhí)行類,實現(xiàn)了大部分SQL的執(zhí)行邏輯,然后把幾個方法教給子類定制化完成,源碼如下:

怎么在Java中使用模板方法模式

怎么在Java中使用模板方法模式

其中doUpdate(),doFlushStatements(),doQuery(),doQueryCursor()等方法都是由子類來實現(xiàn)的,BaseExecutor有那些子類呢?我們來看一下他的類圖:

怎么在Java中使用模板方法模式

我們可以去看看具體每個子類的不同的實現(xiàn)。

模板模式的優(yōu)缺點:

優(yōu)點:

1:利用模板模式可以將相同處理邏輯的代碼放到抽象父類中,提高了代碼的復(fù)用性。

2:將不同的邏輯放到不同的子類中,通過子類的擴展增加新的行為,提高了代碼的擴展性。

3:把不變的行為寫在父類中,去除了子類的重復(fù)代碼,提供了一個很好的代碼復(fù)用平臺,符合開閉原則。

4:公司的高級工程師或者架構(gòu)師在項目前期可以利用模板模式定義好流程,讓其他編碼功工程師去實現(xiàn)具體。

缺點:

1:每個抽象類都需要至少一個子類來實現(xiàn),導(dǎo)致了類數(shù)量的增加。

2:類數(shù)量增加間接增加了系統(tǒng)的復(fù)雜性。

3:因為繼承關(guān)系的自身缺點,如果父類添加一個新的抽象方法,素有子類都要實現(xiàn)一遍。

關(guān)于怎么在Java中使用模板方法模式就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

本文題目:怎么在Java中使用模板方法模式
鏈接URL:http://bm7419.com/article4/jdidie.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供企業(yè)建站、網(wǎng)站設(shè)計、App開發(fā)、軟件開發(fā)做網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)站建設(shè)公司