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

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

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

          public interface Product {
             
          public void doSth();
          }

             
              再看看和他關聯(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)缺點
              優(yōu)點如下:
              客戶類和工廠類分開。消費者任何時候需要某種產品,只需向工廠請求即可。消費者無須修改就可以接納新產品。
              缺點也很明顯:
              當產品修改時,工廠類也要做相應的修改。有點違背了開—閉原則。
             

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

          評論

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

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

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

          導航

          統(tǒng)計

          常用鏈接

          留言簿(1)

          隨筆分類(15)

          隨筆檔案(15)

          收藏夾(1)

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 兴义市| 盖州市| 花莲县| 阿坝县| 镇远县| 永兴县| 淮北市| 禄劝| 平舆县| 通许县| 静乐县| 从江县| 深泽县| 南昌市| 洛扎县| 阳原县| 修武县| 安岳县| 井研县| 泾阳县| 德阳市| 汉源县| 常德市| 田阳县| 社旗县| 姜堰市| 清河县| 青海省| 凤凰县| 沅江市| 涿鹿县| 仁化县| 山西省| 兴文县| 林西县| 宁南县| 山东| 辽宁省| 河池市| 武山县| 大余县|