<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 功能強大 支持多語言、二開方便! 廣告
                ## 1. 定義 >每個子類都對應一個工廠子類,利用多態特性動態創建對象的模式,就是工廠方法模式。 ## 2. 場景 >**復習:** 簡單工廠模式--- 創建一個工廠類,專門用于對象的創建(根據傳入不同的參數,創建不同的對象) >**問題:** 如果新增加一個手機子類,手機工廠就要增加新的if-else判斷,違反了開閉原則(對擴展開放、對修改關閉) >**解決方法:** 可以為每一個手機子類創建對應的工廠子類,這些子類分別實現抽象的工廠接口,這樣我們只需實例化不同的工廠子類,調用創建方法,得到的就是對應的手機對象,是背后是面向對象的多態特性。 ## 3. 重構簡單工廠代碼 `重構代碼:` > 每個子類都有自己對應的工廠類 ~~~ public interface IPhone { void packaging(); } ~~~ ~~~ public interface PhoneFactory { IPhone packaging(); } ~~~ ~~~ public class HWPhone implements IPhone { @Override public void packaging() { System.out.println("華為手機"); } } ~~~ ~~~ public class HWPhoneFactory implements PhoneFactory { @Override public IPhone packaging() { System.out.println("這是生產華為手機工廠"); return new HWPhone(); } } ~~~ ~~~ public class MIPhone implements IPhone { @Override public void packaging() { System.out.println("小米手機"); } } ~~~ ~~~ public class MIPhoneFactory implements PhoneFactory { @Override public IPhone packaging() { System.out.println("這是生產小米手機的工廠"); return new MIPhone(); } } ~~~ ~~~ public class Store { public void sellPhone(PhoneFactory phone) { phone.packaging(); } } ~~~ `測試類:` ~~~ public class TestFactory { public static void main(String[] args) { PhoneFactory hwPhone = new HWPhoneFactory(); PhoneFactory xmPhone = new MIPhoneFactory(); Store store = new Store(); store.sellPhone(hwPhone); } } ~~~ ## 4. 代碼結構圖 ![](https://img.kancloud.cn/15/f8/15f85874de8dfef04823cb2a91cce44e_1117x533.png) ## 5. 總結 > 由此可以看出工廠方法規避了簡單工廠if-else造成的判斷,并且也解決了新添加手機子類需要修改原工廠類的代碼,符合了開閉原則。 > 但是如果需要創建的子類越來越多,不止只有手機,還有ipad、電腦什么的,難道每一個子類都要對應一個工廠類嗎? > 解決上述問題的辦法是抽象工廠模式。參考下節........
                  <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>

                              哎呀哎呀视频在线观看