<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                ## 問題 只到運行時,你才知道你需要什么樣的對象。 ## 方法 使用[工廠方法模式](http://en.wikipedia.org/wiki/Factory_method_pattern),動態地選擇要生成的對象。 假設你需要加載文件到編輯器中,在用戶選擇文件之前,你無法知道文件的格式。一個使用[工廠方法模式](http://en.wikipedia.org/wiki/Factory_method_pattern)的類可以根據文件的擴展名來給出不一樣的解析器。 ~~~ 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" ~~~ ## 詳解 在上例中,你可以忽略不用文件格式的特點,把注意力放在解析的內容。甚至還有更高級的工廠方法,例如,這些方法可以在文件中查找文件版本數據,返回更加精確的解析器(例如使用HTML5解析器代替HTML4解析器)。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看