【設計模式】Java設計模式 – 模板模式

Java設計模式 – 模板模式

😄 不斷學習才是王道
🔥 繼續踏上學習之路,學之分享筆記
👊 總有一天我也能像各位大佬一樣
🏆原創作品,更多關注我CSDN: 一個有夢有戲的人
👊準備將博客園、CSDN一起記錄分享自己的學習心得!!!
🌝分享學習心得,歡迎指正,大家一起學習成長!

image

簡介

在模板模式(Template Pattern)中,一個抽象類公開定義了執行它的方法的方式/模板。它的子類可以按需要重寫方法實現,但調用將以抽象類中定義的方式進行。這種類型的設計模式屬於行為型模式。
                                                                                                                                                    ———— 菜鳥聯盟
UML圖:
image

模板模式實例

本次實驗採用不同種奶茶製作的例子,奶茶類作為抽象類,提供製作奶茶過程的方法,需要子類實現的方法作為抽象方法。在定義兩種不同的奶茶。最後通過測試得出結論。
本次實驗的類圖:
image

①、定義抽象類(模板類)

除了公共方法,其他變化的方法都由子類實現。

package com.lyd.demo.template;
/**
 * @Author: lyd
 * @Description: 抽象類 - 奶茶
 * @Date: 2022-09-02
 */
public abstract class MilkTea {
    final public void make() { // 子類不需要重寫
        pourTea();
        pourMilk();
        filterTea();
        addMaterials();
        stir();
        success();
    }
    public void pourTea() {
        System.out.println("倒入茶葉燜三分鐘");
    }
    public void pourMilk() {
        System.out.println("倒入牛奶加熱至小泡");
    }
    public void filterTea() {
        System.out.println("過濾茶葉");
    }
    public abstract void addMaterials(); // 添加東西,子類實現
    public void stir() {
        System.out.println("攪拌");
    }
    public abstract void success();
}

②、定義具體類

具體類,實現父類的抽象方法,這裡只粘貼紅豆奶茶類

package com.lyd.demo.subclass;

import com.lyd.demo.template.MilkTea;

/**
 * @Author: lyd
 * @Description: 紅豆奶茶
 * @Date: 2022-09-02
 */
public class RedBeanMilkTea extends MilkTea {
    public void addMaterials() {
        System.out.println("添加紅豆");
    }

    public void success() {
        System.out.println("紅豆奶茶做好啦");
    }
}

③、測試

通過調用make方法就可以自動調用子類的特有方法實現。

package com.lyd.demo.test;

import com.lyd.demo.subclass.PearlMilkTea;
import com.lyd.demo.subclass.RedBeanMilkTea;
import com.lyd.demo.template.MilkTea;

/**
 * @Author: lyd
 * @Description: 測試
 * @Date: 2022-09-02
 */
public class TemplateTest {
    public static void main(String[] args) {
        MilkTea redBeanMilkTea = new RedBeanMilkTea();
        redBeanMilkTea.make();
        System.out.println("************************************************");
        MilkTea pearlMilkTea = new PearlMilkTea();
        pearlMilkTea.make();
    }
}

運行結果
image

👍創作不易,可能有些語言不是很通暢,如有錯誤請指正,感謝觀看!記得一鍵三連哦!👍

今天內容比較簡單,很容易理解,設計模式一路過來也到了模板模式,一切還是很順利的,也加深了對java面向對象的理解。