創建模式之SimpleFactory——簡單工廠模式

          1、簡介
              簡單工廠模式是一個對象創建型模式,它定義了一個用于創建對象的接口,讓子類決定實例化哪一個類,它使得一個類的實例化延遲到了子類。
          2、使用場景
              為什么要使用工廠模式,它能幫助解決什么問題?面向對象的封裝(Encapsulation)和分派(Delegation)告訴我們,盡量將長的代碼分派“切割”成每段,將每段再“封裝”起來(減少段和段之間偶合聯系性),這樣就會將風險分散,以后如果需要修改,只要更改每段,不會再發生牽一動百的事情了。使用工廠模式,能夠將創建實例和使用實例分開,封裝了使用者將得到那些具體類的信息,并且隱藏了這些類的實例是如何被創建和放在一起的。
          3、類圖

          4、實例
              先看看Product接口:
          package simpleFactory;

          public interface Product {
             
          public void doSth();
          }

             
              再看看和他關聯的具體的類:
          package simpleFactory;

          public class ConcreteProduct1 implements Product {
              
          public void doSth(){
                  System.out.print(
          "this is product1");
              }
          }

          package simpleFactory;

          public class ConcreteProduct2 implements Product {
                  
          public void doSth(){
                  System.out.print(
          "this is product2");
              }
          }

          package simpleFactory;

          public class ConcreteProduct3 implements Product {
                  
          public void doSth(){
                  System.out.print(
          "this is product3");
              }
          }

          package simpleFactory;

          public class ConcreteProduct4 implements Product {
                  
          public void doSth(){
                  System.out.print(
          "this is product4");
              }
          }

              最后是工廠方法的核心類:
          package simpleFactory;

          public class Creator {
              
          public static Product productFactory(int which) {

                  
          switch(which){
                  
          case 1:
                      
          return new ConcreteProduct1();
                      
          break;
                  
          case 2:
                      
          return new ConcreteProduct2();
                      
          break;
                  
          case 3:
                      
          return  new ConcreteProduct3();
                      
          break;
                  
          case 4:
                      
          return  new ConcreteProduct4();
                      
          break;
                  
          default:
                      
          return null;
                  }
              }   
          }

          5、優缺點
              優點如下:
              客戶類和工廠類分開。消費者任何時候需要某種產品,只需向工廠請求即可。消費者無須修改就可以接納新產品。
              缺點也很明顯:
              當產品修改時,工廠類也要做相應的修改。有點違背了開—閉原則。
             

          posted on 2008-05-13 16:36 云淡風清 閱讀(1518) 評論(1)  編輯  收藏 所屬分類: Design Patterns

          評論

          # re: 創建模式——簡單工廠模式 2008-05-16 15:37 網上買書

          為什么要使用工廠模式,它能幫助解決什么問題?分析的不錯  回復  更多評論   

          <2008年5月>
          27282930123
          45678910
          11121314151617
          18192021222324
          25262728293031
          1234567

          導航

          統計

          常用鏈接

          留言簿(1)

          隨筆分類(15)

          隨筆檔案(15)

          收藏夾(1)

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 伊宁市| 如东县| 临泉县| 荔波县| 南江县| 连云港市| 五家渠市| 太仆寺旗| 五莲县| 崇文区| 上杭县| 勐海县| 乃东县| 定边县| 兴海县| 嘉义县| 敦煌市| 泸州市| 永昌县| 岗巴县| 横山县| 蓝山县| 胶南市| 调兵山市| 阿鲁科尔沁旗| 泾阳县| 财经| 孝感市| 南陵县| 清徐县| 万宁市| 灌南县| 三都| 宁阳县| 沐川县| 安平县| 南昌市| 衡东县| 加查县| 津南区| 通道|