<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>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                ## 問題 Problem 你需要準備一個復雜的、由多個部分組成的對象,但是你希望生成多次,或者使用不同的配置生成。 You need to prepare a complicated, multi-part object, but you expect to do it more than once or with varying configurations. ## 方法 Solution 創建一個“建造者”來分裝對象的創建過程。 Create a Builder to encapsulate the object production process. [Todo.txt](http://todotxt.com/)格式提供了一種高級的(仍然是純文本)方法來管理todo列表。手動打出每一項很累也很容易出錯,因而一個TodoTxtBuilder類可以避免這些麻煩: The?[Todo.txt](http://todotxt.com/)?format provides an advanced but still plain-text method for maintaining lists of to-do items. Typing out each item by hand would provide exhausting and error-prone, however, so a TodoTxtBuilder class could save us the trouble: ~~~ class TodoTxtBuilder constructor: (defaultParameters={ }) -> @date = new Date(defaultParameters.date) or new Date @contexts = defaultParameters.contexts or [ ] @projects = defaultParameters.projects or [ ] @priority = defaultParameters.priority or undefined newTodo: (description, parameters={ }) -> date = (parameters.date and new Date(parameters.date)) or @date contexts = @contexts.concat(parameters.contexts or [ ]) projects = @projects.concat(parameters.projects or [ ]) priorityLevel = parameters.priority or @priority createdAt = [date.getFullYear(), date.getMonth()+1, date.getDate()].join("-") contextNames = ("@#{context}" for context in contexts when context).join(" ") projectNames = ("+#{project}" for project in projects when project).join(" ") priority = if priorityLevel then "(#{priorityLevel})" else "" todoParts = [priority, createdAt, description, contextNames, projectNames] (part for part in todoParts when part.length > 0).join " " builder = new TodoTxtBuilder(date: "10/13/2011") builder.newTodo "Wash laundry" # => '2011-10-13 Wash laundry' workBuilder = new TodoTxtBuilder(date: "10/13/2011", contexts: ["work"]) workBuilder.newTodo "Show the new design pattern to Lucy", contexts: ["desk", "xpSession"] # => '2011-10-13 Show the new design pattern to Lucy @work @desk @xpSession' workBuilder.newTodo "Remind Sean about the failing unit tests", contexts: ["meeting"], projects: ["compilerRefactor"], priority: 'A' # => '(A) 2011-10-13 Remind Sean about the failing unit tests @work @meeting +compilerRefactor' ~~~ ## 討論 Discussion TodoTxtBuilder包攬了所有繁重的生成文本的工作,使得程序員把注意力放在每個todo項不一樣的部分。而且,可以把命令行工具或者GUI插入到這段代碼中,and still retain support for later, more advanced versions of the format with ease. The TodoTxtBuilder class takes care of all the heavy lifting of text generation and lets the programmer focus on the unique elements of each to-do item. Additionally, a command line tool or GUI could plug into this code and still retain support for later, more advanced versions of the format with ease. ### 開工前 Pre-Construction 無需每次都重新創建一個需要對象的實例,我們可以組建轉移到別的對象上,這樣我們可以在隨后的創建過程中擦改。 Instead of creating a new instance of the needed object from scratch every time, we shift the burden to a separate object that we can then tweak during the object creation process. ~~~ builder = new TodoTxtBuilder(date: "10/13/2011") builder.newTodo "Order new netbook" # => '2011-10-13 Order new netbook' builder.projects.push "summerVacation" builder.newTodo "Buy suntan lotion" # => '2011-10-13 Buy suntan lotion +summerVacation' builder.contexts.push "phone" builder.newTodo "Order tickets" # => '2011-10-13 Order tickets @phone +summerVacation' delete builder.contexts[0] builder.newTodo "Fill gas tank" # => '2011-10-13 Fill gas tank +summerVacation' ~~~ ### 練習 Exercises * 補充project-和context-tag產生器的代碼,過濾掉重復的項; * 有些Todo.txt的用戶常常會把project和context標記插入到todo項的描述中,添加一些代碼吧這些標識出這些記號,并把它們從后面的標記剔除掉。 * Expand the project- and context-tag generation code to filter out duplicate entries. * Some Todo.txt users like to insert project and context tags inside the description of their to-do items. Add code to identify these tags and filter them out of the end tags.
                  <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>

                              哎呀哎呀视频在线观看