1. 程式人生 > 其它 >java中的模板設計模式

java中的模板設計模式

設計模式概述

  • 設計模式就是解決一些問題時的固定思路,也就是程式碼設計思路經驗的總結。

模板設計模式概述

  • 針對某些情況,在父類中指定一個模板,然後根據具體情況,在子類中靈活的具體實現該模板
public abstract class Person{
    // 有方法體的方法
    // 通用模板
    public void sleep(){
        System.out.println("兩眼一閉,然後就開始進入夢鄉...");
    }
    // 沒有方法體的方法
    // 填充模板
    public abstract void eat();
}

抽象類體現的就是模板設計思想

模板是將通用的東西在抽象類中具體的實現,而模板中不能決定的東西定義成抽象方法,讓使用模板(繼承抽象類的類)的類去重寫抽象方法實現需求

模板模式的實現步驟

  • 定義抽象父類作為模板
  • 在父類中定義"模板方法"— 實現方法(通用模板)+抽象方法(填充模板)
  • 子類繼承父類,重寫抽象方法(填充父類的模板)
  • 測試類:
    • 建立子類物件,通過子類呼叫父類的“實現的方法”+ “子類重寫後的方法” e

案例演示

假如我現在需要定義新司機和老司機類,新司機和老司機都有開車功能,開車的步驟都一樣,只是駕駛時的姿勢有點不同,新司機:開門,點火,雙手緊握方向盤,剎車,熄火老司機:開門,點火,右手握方向盤左手抽菸,剎車,熄火

。那麼這個時候我們就可以將固定流程寫到父類中,不同的地方就定義成抽象方法,讓不同的子類去重寫

分析:

  • 定義一個司機抽象類作為父類
    • 通用模板: 開車步驟新司機和老司機都是一樣的
      • 有方體的方法
        • 開門
        • 點火
        • 姿勢(不能確定的)
        • 剎車
        • 熄火
    • 填充模板: 開車的姿勢不一樣
      • 抽象方法
  • 定義新司機類,繼承司機類,重寫開車姿勢的抽象方法
  • 定義老司機類,繼承司機類,重寫開車姿勢的抽象方法

程式碼如下:

// 司機開車的模板類
public abstract class Driver {
    public void go() {
        System.out.println("開門");
        System.
out.println("點火"); // 開車姿勢不確定?定義為抽象方法 ziShi(); System.out.println("剎車"); System.out.println("熄火"); } public abstract void ziShi(); }

現在定義兩個使用模板的司機:

public class NewDriver extends Driver {

    @Override
    public void ziShi() {
        System.out.println("新司機雙手緊握方向盤");
    }
}

public class OldDriver extends Driver {
    @Override
    public void ziShi() {
        System.out.println("老司機右手握方向盤左手抽菸...");
    }
}

編寫測試類

public class Demo02 {
    public static void main(String[] args) {
        NewDriver nd = new NewDriver();
        nd.go();

        OldDriver od = new OldDriver();
        od.go();
    }
}

執行效果
在這裡插入圖片描述
可以看出,模板模式的優勢是,模板已經定義了通用架構,使用者只需要關心自己需要實現的功能即可!非常的強大!

小結

  • 定義一個抽象類作為父類
  • 在抽象類中,該模板可以確定的功能,就定義成一個有方法體的方法,作為通用模板
  • 在抽象類中,該模板不可以確定的功能,就定義成一個抽象方法,作為填充模板
  • 讓需要使用該模板的類,去繼承該抽象類,填充模板\使用模板