W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
直到開始運(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解析器)。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: