創建模式之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 云淡風清 閱讀(1520) 評論(1)  編輯  收藏 所屬分類: Design Patterns

          評論

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

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

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

          導航

          統計

          常用鏈接

          留言簿(1)

          隨筆分類(15)

          隨筆檔案(15)

          收藏夾(1)

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 花莲市| 米泉市| 卢氏县| 临汾市| 广丰县| 乌拉特中旗| 宜良县| 彰武县| 鲁甸县| 密云县| 赣榆县| 萍乡市| 武功县| 绵阳市| 融水| 绥棱县| 健康| 玉树县| 昌都县| 玉林市| 永安市| 武乡县| 靖边县| 通榆县| 汉中市| 北流市| 读书| 招远市| 中卫市| 阿城市| 庆云县| 沙雅县| 石景山区| 福清市| 什邡市| 钟山县| 遵义县| 西吉县| 曲麻莱县| 无极县| 汽车|