Template Method用來表達擁有共同的執行流程與步驟,但執行步驟的實作方式可能不同
Example
假設我們有一個程式是要去讀設定資料,而這個資料來源可以是從檔案或是資料庫
Client只要呼叫doParse就能取得PersonData的設定資料
因為不管資料來源是從檔案還是資料庫其實讀取資料的流程和步驟都一樣
只是讀取的實作方式不同,因此我們可以套用Template method patern
以我們的ConfigParser中定義了doParse()這個template method,它主要就是拿來控制流程用的
它的步驟分別是:
1. readData: 讀取資料的方式就可以分成透過檔案或資料庫
2. parseToken: 擷取與分析我們需要的資訊
3. buildModel: 建立我們的domain model
4. validate: 接著是驗證資料
最後回傳PersonData
接著DBConfigParser和FileConfigParser就可以去繼承ConfigParser
Override非控制流程的method,依照資料來源不同而去實作
(這邊沒有真的去讀取資料庫和檔案)
最後我們寫一個Client來驗證我們的程式
最後我們的Output就長這樣
可以看得出來parse的流程都一樣,只是實作的細節和資料不一樣
Ref:
[1] http://teddy-chen-tw.blogspot.com/2017/08/ntemplate-method.html
文章標籤
全站熱搜
留言列表