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

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                **定義:**模板方法模式(TemplateMethod Pattern),定義一個操作中的算法的骨架,而將一些步驟延遲到子類中。模塊方法使得子類可以不改變一個算法的結構即可重定義該算法的某些特定步驟。 類型:類行為型模式 概述: ???????模板方法模式應該算是所有設計模式中最簡單,卻也是應用得最多的模式了。模板方法模式其實就是多態的體現。 ?????????模板方法模式設計的要點是在父類中定義好一個操作中的算法骨架,然后具體實現延遲到子類中。模板方法其實與策略模式有一些類似的地方。不同點是,策略模式將算法抽象出來成為一個新的類,而模板方法則沒有將算法抽象出來。主要體現是策略模式的算法相對復雜一點,而模板方法的算法相對簡單一點。 ????????舉例,有一群人,可以按身高排序然后取其中高的一部分;也可以體量排序然后取其中體量適宜的一部分。 類圖: ![](https://box.kancloud.cn/2016-08-19_57b6b467da063.jpg) 參與者: 1. People,基類,提供一個模板方法,并且提供抽象的接口。模板方法調用接口完成具體的算法。 1. HighPeople、FatPeople,根據想要完成的情況,來具體實現抽象接口**。** 示例代碼: ~~~ using System; using System.Collections.Generic; using System.Text; namespace Pattern23 { abstract class People { public abstract void Sort(); public abstract void Remove(); public void TemplateMethod() { Sort(); Remove(); } } class HighPeople : People { public override void Sort() { Console.WriteLine("按身高排序"); } public override void Remove() { Console.WriteLine("排除掉身高低于170cm的人"); } } class FatPeople : People { public override void Sort() { Console.WriteLine("按體重排序"); } public override void Remove() { Console.WriteLine("排除體量超過80K以及少于60KG的人"); } } class Program { static void Main(string[] args) { People people; people = new HighPeople(); people.TemplateMethod(); people = new FatPeople(); people.TemplateMethod(); } } } ~~~ 適用性: 1. 一次性實現一個算法的不變的部分,并將可變的行為留給子類來實現。 1. 各子類中公共的行為應被提取出來并集中到一個公共父類中以避免代碼重復。 首先識別現有代碼中的不同之處,并且將不同之處分離為新的操作。 最后,用一個調用這些新的操作的模板方法來替換這些不同的代碼。 1. 控制子類擴展。 優缺點: 1. 優點,完成新的模板方法是不用修改原有代碼,通過添加新代碼完成。 參考資料: 1. 《設計模式——可復用面向對象軟件基礎》 1. 《大話設計模式》
                  <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>

                              哎呀哎呀视频在线观看