日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

Java描述设计模式(19):模板方法模式

發布時間:2025/3/16 java 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java描述设计模式(19):模板方法模式 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本文源碼:GitHub·點這里 || GitEE·點這里

一、生活場景

通常一款互聯網應用的開發流程如下:業務需求,規劃產品,程序開發,測試交付。現在基于模板方法模式進行該過程描述。

public class C01_InScene {public static void main(String[] args) {DevelopApp developApp = new DevelopApp() ;developApp.templateMethod() ;} } /*** 軟件開發抽象類*/ abstract class SoftDevelop {public void templateMethod(){//調用基本方法doBiz ();doProduct();doDevelop();doTest();}public abstract void doBiz () ;public abstract void doProduct () ;public abstract void doDevelop () ;public abstract void doTest () ; } /*** APP開發具體類*/ class DevelopApp extends SoftDevelop {@Overridepublic void doBiz() {System.out.println("整理App業務");}@Overridepublic void doProduct() {System.out.println("輸出App產品");}@Overridepublic void doDevelop() {System.out.println("進行App開發");}@Overridepublic void doTest() {System.out.println("進行App測試");} }

二、模板方法模式

1、基礎概念

模板方法模式是類的行為模式。準備一個抽象類,將部分邏輯以具體方法以及具體構造函數的形式實現,然后聲明一些抽象方法來迫使子類實現剩余的邏輯。不同的子類可以用不同的方式實現這些抽象方法,從而對剩余的邏輯有不同的實現。簡單說,模板方法模式定義流程中的核心的框架,而將實際的業務操作延遲到子類中,使得子類可以不改變流程的結構,但可以重定義業務程序。

2、模式圖解

3、核心角色

  • 抽象模板角色

類中實現了模板方法(template),定義流程結構,具體業務需求子類需要去實現。

  • 具體模板角色

實現父類所定義的一個或多個抽象方法,是整個流程的組成方法。抽象模板角色都可以有任意多個具體模板角色與之對應,具體模板角色都可以給出這些抽象方法的不同實現。

4、源碼實現

/*** 抽象模板角色*/ abstract class AbstractTemplate {/*** 模板方法*/public void templateMethod(){//調用基本方法abstractMethod();hookMethod();concreteMethod();}/*** 相關基本方法*/protected abstract void abstractMethod();protected void hookMethod(){}private final void concreteMethod(){} } /*** 具體模板角色*/ class ConcreteTemplate extends AbstractTemplate{/*** 基本方法的實現*/@Overridepublic void abstractMethod() {}/*** 重寫父類的方法*/@Overridepublic void hookMethod(){} }

5、不同方法描述

  • 模板方法

定義在抽象類中的,把基本操作方法組合在一起形成一個總流程的方法,可以有任意多個模板方法。

  • 基本方法
  • 抽象方法:抽象方法由抽象類聲明,由具體子類實現。
  • 具體方法:具體方法由抽象類聲明并實現,而子類并不實現。
  • 鉤子方法:鉤子方法由抽象類聲明并實現,而子類可以加以擴展。
  • 三、JavaEE應用

    HttpServlet擔任抽象模板角色,模板方法:由service()方法擔任。基本方法:由doPost()、doGet()等方法擔任。service()方法流程,省略了部分判斷邏輯。該方法調用七個do方法中的一個或幾個,完成對客戶端請求的響應。這些do方法需要由HttpServlet的具體子類提供,在JavaEE中使用時,通常會自己實現相關方法。在API的封裝是典型的模板方法模式。

    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {if (method.equals("GET")) {this.doGet(req, resp);} else if (method.equals("HEAD")) {this.doHead(req, resp);} else if (method.equals("POST")) {this.doPost(req, resp);} else if (method.equals("PUT")) {this.doPut(req, resp);} else if (method.equals("DELETE")) {this.doDelete(req, resp);} else if (method.equals("OPTIONS")) {this.doOptions(req, resp);} else if (method.equals("TRACE")) {this.doTrace(req, resp);} else {String errMsg = lStrings.getString("http.method_not_implemented");Object[] errArgs = new Object[]{method};errMsg = MessageFormat.format(errMsg, errArgs);resp.sendError(501, errMsg);} }

    四、源代碼地址

    GitHub·地址 https://github.com/cicadasmile/model-arithmetic-parent GitEE·地址 https://gitee.com/cicadasmile/model-arithmetic-parent

    總結

    以上是生活随笔為你收集整理的Java描述设计模式(19):模板方法模式的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。