2019年8月5日 星期一

[Design Pattern] 範本模式(Template Pattern)

前言:
以前看到範本模式的介紹時,心裡有一個疑問,
看起來就是衍生類別繼承基底類別,為何算一個模式?
直到有一次寫程式不經意用到範本模式,才恍然大悟,
範本不是單純繼承,而是定義好流程,細節留待衍生類別去定義。


說明:
簡單的類別圖如下:


BaseClass就是所謂的範本,定義了Main(),Main()則會執行Start()->Detail()->End(),
其中Start()是private方法,Detail()是abstract方法,讓繼承的類別去實作,
而End()是virtual方法,意即由衍生類別自己決定是否覆寫。