99re热这里只有精品视频,7777色鬼xxxx欧美色妇,国产成人精品一区二三区在线观看,内射爽无广熟女亚洲,精品人妻av一区二区三区

CoffeeScript 模板方法模式

2022-06-29 17:16 更新

模板方法模式

問題

定義一個算法的結(jié)構(gòu),作為一系列的高層次的步驟,使每一個步驟的行為可以指定,使屬于一個族的算法都具有相同的結(jié)構(gòu)但是有不同的行為。

解決方案

使用模板方法(Template Method)在父類中描述算法的結(jié)構(gòu),再授權(quán)一個或多個具體子類來具體地進(jìn)行實現(xiàn)。

例如,想象你希望模擬各種類型的文件的生成,并且每個文件要包含一個標(biāo)題和正文。

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

討論

在這個實例中,算法用兩個步驟來描述文件的生成:其一是產(chǎn)生文件的標(biāo)題,另一步是生成文件的正文。父類中是實現(xiàn)每一個步驟的空的方法,多態(tài)性使得每一個具體的子類可以通過重寫一步步的方法來實現(xiàn)對方法不同的利用。在本實例中,DocWithHeader實現(xiàn)了正文和標(biāo)題的步驟, DocWithoutHeader只是實現(xiàn)了正文的步驟。

不同類型文件的生成就是簡單的將文檔對象存儲在一個數(shù)組中,簡單的遍歷每個文檔對象并調(diào)用其produceDocument方法的問題。

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號