模板模式學習筆記

2021-10-09 16:50:30 字數 2187 閱讀 7146

以豆漿為例子, 製作黑豆豆漿/花生豆漿/純豆漿。

製作的過程或者說流程都固定在乙個方法裡。 子類只需要重寫必要的方法(這裡是新增調料)即可。

1. 豆漿基類

import android.util.log

abstract class soymilk

soak()

beat()

}private fun select()

abstract fun add()

private fun soak()

private fun beat()

open fun needaddingredient () : boolean

}

其中make() 方法為製作的過程(可以看成是乙個演算法),子類根據需要重寫add() 或者 needaddingredient()

needaddingredient() 表示需要新增配料,預設為true,

則不需要新增配料時,覆寫此方法並返回false 即可

2. 黑豆豆漿

import android.util.log

class blackbeansoymilk : soymilk()

}

3. 花生豆漿

import android.util.log

class peanutsoymilk : soymilk()

}

4. 純豆漿

class puresoymilk : soymilk() 

override fun needaddingredient(): boolean

}

5. 輸出結果

2020-09-22 17:24:58.262 22735-22782/? d/designpattern: ********************製作黑豆豆漿********************

2020-09-22 17:24:58.262 22735-22782/? d/blackbeansoymilk: 選擇新鮮且飽滿的黃豆

2020-09-22 17:24:58.262 22735-22782/? d/blackbeansoymilk: 加入配料黑豆

2020-09-22 17:24:58.262 22735-22782/? d/blackbeansoymilk: 將黃豆和配料浸泡

2020-09-22 17:24:58.262 22735-22782/? d/blackbeansoymilk: 將黃豆和配料放入豆漿機攪拌

2020-09-22 17:24:58.262 22735-22782/? d/designpattern: ********************製作花生豆漿********************

2020-09-22 17:24:58.262 22735-22782/? d/peanutsoymilk: 選擇新鮮且飽滿的黃豆

2020-09-22 17:24:58.262 22735-22782/? d/peanutsoymilk: 加入配料花生

2020-09-22 17:24:58.262 22735-22782/? d/peanutsoymilk: 將黃豆和配料浸泡

2020-09-22 17:24:58.262 22735-22782/? d/peanutsoymilk: 將黃豆和配料放入豆漿機攪拌

2020-09-22 17:24:58.262 22735-22782/? d/designpattern: ********************製作純豆漿********************

2020-09-22 17:24:58.262 22735-22782/? d/puresoymilk: 選擇新鮮且飽滿的黃豆

2020-09-22 17:24:58.262 22735-22782/? d/puresoymilk: 將黃豆和配料浸泡

2020-09-22 17:24:58.262 22735-22782/? d/puresoymilk: 將黃豆和配料放入豆漿機攪拌

從這個例子,可以和裝飾者模式做對比,之前寫過使用裝飾者模式來生產不同型別的咖啡 (

個人覺得主要區別在於, 裝飾者模式側重在為物件新增乙個功能時的拓展性 (如為咖啡新增新的調料到原來的咖啡中)

而模板模式側重同乙個過程的不同實現 (如新增配料的不同實現)

模板模式(學習筆記)

模板模式 模板模式看起來很簡單,看起來。先看一下uml圖吧 這不就是乙個繼承麼?子類完成超類的抽象方法?重要的是templetemethod 可以看到,它規定的operation1與operation2的執行順序。定義 定義乙個操作中的演算法 也就是上圖中的templetemethod方法 的骨架,...

設計模式學習筆記 模板 Template 模式

設計模式 設計模式,模板模式,template,模板方法 模板模式中的角色 模板模式可以很簡單的理解為,通過同乙個模具倒出來的模型。形狀上是一樣的,但是其上的花紋,紋理等卻可能完全不一樣。這裡的模板模式,特指template method模板方法模式。其原理為父類制定好規範 待實現的方法和模板方法。...

學習筆記 C C 設計模式 模板模式

模板設計模式是一種非常簡單的設計模式,其主要是利用了虛函式的特性實現。非常適合應用在一些演算法 流程 業務邏輯是固定的形式,其中某些步驟的實現方式又無法確定下來的場景。以下為模擬某晶元基於串列埠通訊的韌體公升級 可以提供乙個 firmwareupgrade 的類用於使用者整合。考慮到跨平台,該類的串...