CoffeeScript 工廠方法模式

2022-06-29 17:15 更新

工廠方法模式

問題

直到開始運(yùn)行你才知道需要的是什么種類的對象。

解決方案

使用工廠方法(Factory Method)模式和選擇對象都是動態(tài)生成的。

你需要將一個(gè)文件加載到編輯器,但是直到用戶選擇文件時(shí)你才知道它的格式。一個(gè)類使用工廠方法 ( Factory Method )模式可以根據(jù)文件的擴(kuò)展名提供不同的解析器。

class HTMLParser
    constructor: ->
        @type = "HTML parser"
class MarkdownParser
    constructor: ->
        @type = "Markdown parser"
class JSONParser
    constructor: ->
        @type = "JSON parser"

class ParserFactory
    makeParser: (filename) ->
        matches = filename.match /\.(\w*)$/
        extension = matches[1]
        switch extension
            when "html" then new HTMLParser
            when "htm" then new HTMLParser
            when "markdown" then new MarkdownParser
            when "md" then new MarkdownParser
            when "json" then new JSONParser

factory = new ParserFactory

factory.makeParser("example.html").type # => "HTML parser"

factory.makeParser("example.md").type # => "Markdown parser"

factory.makeParser("example.json").type # => "JSON parser"

討論

在這個(gè)示例中,你可以關(guān)注解析的內(nèi)容,忽略細(xì)節(jié)文件的格式。更先進(jìn)的工廠方法,例如,搜索版本控制文件中的數(shù)據(jù)本身,然后返回一個(gè)更精確的解析器(例如,返回一個(gè)HTML5解析器而不是HTML v4解析器)。

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

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號