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

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                8.2 工廠方法模式的定義 工廠方法模式使用的頻率非常高,在我們日常的開發中總能見到它的身影。其定義為: Define an interface for creating an object,but let subclasses decide which class to instantiate.Factory Method lets a class defer instantiation to subclasses.(定義一個用于創建對象的接口,讓子類決定實例化哪一個類。工廠方法使一個類的實例化延遲到其子類。) 工廠方法模式的通用類圖如圖8-2所示。 ![](https://box.kancloud.cn/2016-08-14_57b003606a24e.jpg) 圖8-2 工廠方法模式通用類圖 在工廠方法模式中,抽象產品類Product負責定義產品的共性,實現對事物最抽象的定義;Creator為抽象創建類,也就是抽象工廠,具體如何創建產品類是由具體的實現工廠ConcreteCreator完成的。工廠方法模式的變種較多,我們來看一個比較實用的通用源碼。 抽象產品類代碼如代碼清單8-8所示。 代碼清單8-8 抽象產品類 public?abstract?class?Product?{???? ?????//產品類的公共方法 ?????public?void?method1(){ ?????????????//業務邏輯處理 ?????}?? ?????//抽象方法 ?????public?abstract?void?method2();???? } 具體的產品類可以有多個,都繼承于抽象產品類,其源代碼如代碼清單8-9所示。 代碼清單8-9 具體產品類 public?class?ConcreteProduct1?extends?Product?{ ?????public?void?method2()?{ ?????????????//業務邏輯處理 ?????} } public?class?ConcreteProduct2?extends?Product?{ ?????public?void?method2()?{ ?????????????//業務邏輯處理 ?????} } 抽象工廠類負責定義產品對象的產生,源代碼如代碼清單8-10所示。 代碼清單8-10 抽象工廠類 public?abstract?class?Creator?{???? ?????/* ??????*?創建一個產品對象,其輸入參數類型可以自行設置 ??????*?通常為String、Enum、Class等,當然也可以為空 ??????*/???????? ?????public?abstract?<T?extends?Product>?T?createProduct(Class<T>?c); } 具體如何產生一個產品的對象,是由具體的工廠類實現的,如代碼清單8-11所示。 代碼清單8-11 具體工廠類 public?class?ConcreteCreator?extends?Creator?{????? ?????public?<T?extends?Product>?T?createProduct(Class<T>?c){ ?????????????Product?product=null; ?????????????try?{ ????????????????????product?=?(Product)Class.forName(c.getName()).newInstance(); ?????????????}?catch?(Exception?e)?{ ????????????????????//異常處理 ?????????????} ?????????????return?(T)product;????????? ?????} } 場景類的調用方法如代碼清單8-12所示。 代碼清單8-12 場景類 public?class?Client?{ ?????public?static?void?main(String[]?args)?{ ?????????????Creator?creator?=?new?ConcreteCreator(); ?????????????Product?product?=?creator.createProduct(ConcreteProduct1.class); ?????????????/* ??????????????*?繼續業務處理 ??????????????*/ ?????} } 該通用代碼是一個比較實用、易擴展的框架,讀者可以根據實際項目需要進行擴展。
                  <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>

                              哎呀哎呀视频在线观看