以豆漿為例子, 製作黑豆豆漿/花生豆漿/純豆漿。
製作的過程或者說流程都固定在乙個方法裡。 子類只需要重寫必要的方法(這裡是新增調料)即可。
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 的類用於使用者整合。考慮到跨平台,該類的串...