<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、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                # 一、工廠模式(創建型模式) 工廠模式具體可分為三類模式:簡單工廠模式,工廠方法模式,抽象工廠模式 ## 1.簡單工廠模式 又稱為靜態工廠方法(Static Factory Method)模式,它屬于類創建型模式。在簡單工廠模式中,可以根據參數的不同返回不同類的實例。簡單工廠模式專門定義一個類來負責創建其他類的實例,被創建的實例通常都具有共同的父類。 **UML類圖:** ![](https://img.kancloud.cn/65/4d/654d61c3038dc118604d94d1d7459817_645x315.png) **示例代碼:** ![](https://img.kancloud.cn/1f/29/1f291f02bcccfd20b27fb123792b6d6e_678x562.png) 簡單工廠模式最大的優點在于實現對象的創建和對象的使用分離,將對象的創建交給專門的工廠類負責。 但是其最大的缺點在于工廠類不夠靈活,增加新的具體產品需要修改工廠類的判斷邏輯代碼 而且產品較多時,工廠方法代碼將會非常復雜。 ## 2.工廠方法模式 此模式中,通過定義一個抽象的核心工廠類,并定義創建產品對象的接口,創建具體產品實例的工作延遲到其工廠子類去完成。 這樣做的好處是核心類只關注工廠類的接口定義,而具體的產品實例交給具體的工廠子類去創建。當系統需要新增一個產品是,無需修改現有系統代碼,只需要添加一個具體產品類和其對應的工廠子類,是系統的擴展性變得很好,符合面向對象編程的開閉原則。 **UML類圖:** ![](https://img.kancloud.cn/38/76/3876f657a6c6006a3495f129bcdb00f3_780x392.png) **示例代碼:** ![](https://img.kancloud.cn/96/8f/968f878f234c6bc21384ba6d59f15f6e_670x428.png) ![](https://img.kancloud.cn/cd/04/cd04fdf31205ebd0d55282a2d2f657a4_663x464.png) 工廠方法模式是簡單工廠模式的進一步抽象和推廣。由于使用了面向對象的多態性,工廠方法模式保持了簡單工廠模式的優點,而且克服了它的缺點。 在工廠方法模式中,核心的工廠類不再負責所有產品的創建,而是將具體創建工作交給子類去做。這個核心類僅僅負責給出具體工廠必須實現的接口,而不負責產品類被實例化這種細節,這使得工廠方法模式可以允許系統在不修改工廠角色的情況下引進新產品。 ## 3.抽象工廠模式 提供一個創建一系列相關或相互依賴對象的接口,而無須指定它們具體的類。抽象工廠模式又稱為Kit模式,屬于對象創建型模式。 此模式是對工廠方法模式的進一步擴展。在工廠方法模式中,一個具體的工廠負責生產一類具體的產品,即一對一的關系,但是,如果需要一個具體的工廠生產多種產品對象,那么就需要用到抽象工廠模式了。 **UML類圖:** ![](https://img.kancloud.cn/59/d7/59d730fe9ff928a89d31cd4f7b6e24b2_414x439.png) **角色:** * 抽象工廠(AbstractFactory):擔任這個角色的是抽象工廠模式的核心,是與應用系統的商業邏輯無關的。 * 具體工廠(Factory):這個角色直接在客戶端的調用下創建產品的實例,這個角色含有選擇合適的產品對象的邏輯,而這個邏輯是與應用系統商業邏輯緊密相關的。 * 抽象產品(AbstractProduct):擔任這個角色的類是抽象工廠模式所創建的對象的父類,或它們共同擁有的接口 * 具體產品(Product):抽象工廠模式所創建的任何產品對象都是一個具體的產品類的實例。 **示例代碼:** 抽象產品和具體產品 ![](https://img.kancloud.cn/f1/67/f1673e483820e24f447a48555be724c8_670x665.png) 抽象工廠和具體工廠 ![](https://img.kancloud.cn/ca/98/ca98d15efb4a9b54caf57abac27cb752_666x440.png)
                  <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>

                              哎呀哎呀视频在线观看