設計模式學習筆記(十)—Factory Method模式

          Posted on 2007-11-29 17:41 flustar 閱讀(1710) 評論(0)  編輯  收藏 所屬分類: Design Patterns

              《設計模式》一書對Factory Method模式是這樣描述的:
               定義一個用于創建對象的接口,讓子類決定實例化哪一個類。FactoryMethod使一個類的實例化延遲到其子類。
               我的理解:FatoryMethod模式是一種創建型模式,定義一個用于創建對象的接口的意思是說,我們要定義一個用于創建對象的接口(或者說抽象類,實際上就是個抽象工廠abstractFactory),它的內部有一個創建對象的方法,這個方法的返回值是一個接口(或者抽象類)的類型,這個方法就是FactoryMethod;讓子類決定實例化哪一個類意思是說我們要定義一個實現了該創建對象的接口(或者抽象類)的子類(具體的工廠類concreteFactory),讓子類決定要創建對象的具體類型的實例(實現FactoryMethod)。下面給出一個例子,代碼如下:
          abstract  class BallFactory{
           protected  abstract Ball makeBall();  //Factory Method
          }
          class BasketballFact extends BallFactory{
           public Ball makeBall(){       //子類實現Factory Method決定實例化哪一個類的
            return new Basketball();
           }
           
          }
          class FootballFact extends BallFactory{
           public Ball makeBall(){      //子類實現Factory Method決定實例化哪一個類的
            return new Football();
           }
          }
          class  Basketball extends Ball{
           public void play(){
            System.out.println("play the basketball");
           }
          }
          class Football extends Ball{
           public  void play(){
            System.out.println("play the football");
           }
          }
          abstract class Ball{
           protected  abstract  void play();
          }

          class test{
           public static void main(String[] args){
            BallFactory ballFactory=new BasketballFact();
            Ball basketball=ballFactory.makeBall();
            basketball.play();
            
            ballFactory=new FootballFact();
            Ball football=ballFactory.makeBall();
            football.play();
           
           }
           
          }

          輸出如下:
          play the basketball
          play the football
          這個模式我在abstract Factory模式中已經使用過了,只是那時候還不知道有Factory Method這個模式,在我舉例中的ResFactory類的getDisplayDrvr()和getPrintDrvr()實際上就是工廠方法。具體參見《設計模式學習筆記(五)—Abstract Factory抽象工廠模式》。
          小結:Factory Method模式是一個非常常用的模式。它主要適用于:
          1) 當一個類不知道它所必須創建的對象的類的時候。
          2) 當一個類希望由它的子類來指定它所創建的對象的時候。
          3) 當類將創建對象的職責委托給多個幫助子類中的某一個,來完成這個創建對象的任務。

          posts - 146, comments - 143, trackbacks - 0, articles - 0

          Copyright © flustar

          主站蜘蛛池模板: 开封市| 榆社县| 上蔡县| 南充市| 台南市| 阿瓦提县| 沽源县| 津市市| 莎车县| 枝江市| 任丘市| 凤阳县| 西乌珠穆沁旗| 修水县| 巴塘县| 循化| 宜州市| 永登县| 尉犁县| 泸溪县| 阜南县| 探索| 轮台县| 屯门区| 巴中市| 化州市| 巴塘县| 呈贡县| 上犹县| 静宁县| 唐河县| 襄垣县| 永吉县| 大渡口区| 额尔古纳市| 奎屯市| 成安县| 醴陵市| 大英县| 凤山市| 普兰店市|