創(chuàng)建模式之SimpleFactory——簡單工廠模式

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

          4、實(shí)例
              先看看Product接口:
          package simpleFactory;

          public interface Product {
             
          public void doSth();
          }

             
              再看看和他關(guān)聯(lián)的具體的類:
          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、優(yōu)缺點(diǎn)
              優(yōu)點(diǎn)如下:
              客戶類和工廠類分開。消費(fèi)者任何時(shí)候需要某種產(chǎn)品,只需向工廠請(qǐng)求即可。消費(fèi)者無須修改就可以接納新產(chǎn)品。
              缺點(diǎn)也很明顯:
              當(dāng)產(chǎn)品修改時(shí),工廠類也要做相應(yīng)的修改。有點(diǎn)違背了開—閉原則。
             

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

          評(píng)論

          # re: 創(chuàng)建模式——簡單工廠模式 2008-05-16 15:37 網(wǎng)上買書

          為什么要使用工廠模式,它能幫助解決什么問題?分析的不錯(cuò)  回復(fù)  更多評(píng)論   

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

          導(dǎo)航

          統(tǒng)計(jì)

          常用鏈接

          留言簿(1)

          隨筆分類(15)

          隨筆檔案(15)

          收藏夾(1)

          搜索

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 通道| 新平| 盐津县| 绥德县| 黎平县| 明水县| 庆城县| 文登市| 临泽县| 津南区| 灵石县| 福安市| 铜山县| 龙海市| 讷河市| 永康市| 林口县| 永安市| 汉沽区| 牟定县| 蕲春县| 修水县| 阿拉尔市| 天峻县| 登封市| 灵寿县| 安西县| 凤城市| 泸州市| 丰县| 甘洛县| 金溪县| 宣汉县| 阿坝| 德清县| 阳江市| 嵩明县| 图木舒克市| 涿州市| 邢台县| 寿阳县|