W3Cschool
恭喜您成為首批注冊用戶
獲得88經驗值獎勵
定義一個算法的結構,作為一系列的高層次的步驟,使每一個步驟的行為可以指定,使屬于一個族的算法都具有相同的結構但是有不同的行為。
使用模板方法(Template Method)在父類中描述算法的結構,再授權一個或多個具體子類來具體地進行實現(xiàn)。
例如,想象你希望模擬各種類型的文件的生成,并且每個文件要包含一個標題和正文。
class Document
produceDocument: ->
@produceHeader()
@produceBody()
produceHeader: ->
produceBody: ->
class DocWithHeader extends Document
produceHeader: ->
console.log "Producing header for DocWithHeader"
produceBody: ->
console.log "Producing body for DocWithHeader"
class DocWithoutHeader extends Document
produceBody: ->
console.log "Producing body for DocWithoutHeader"
docs = [new DocWithHeader, new DocWithoutHeader]
doc.produceDocument() for doc in docs
在這個實例中,算法用兩個步驟來描述文件的生成:其一是產生文件的標題,另一步是生成文件的正文。父類中是實現(xiàn)每一個步驟的空的方法,多態(tài)性使得每一個具體的子類可以通過重寫一步步的方法來實現(xiàn)對方法不同的利用。在本實例中,DocWithHeader實現(xiàn)了正文和標題的步驟, DocWithoutHeader只是實現(xiàn)了正文的步驟。
不同類型文件的生成就是簡單的將文檔對象存儲在一個數(shù)組中,簡單的遍歷每個文檔對象并調用其produceDocument方法的問題。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: