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

          Posted on 2007-11-29 17:41 flustar 閱讀(1711) 評論(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

          主站蜘蛛池模板: 惠州市| 绵竹市| 陇南市| 汕头市| 和平区| 宜阳县| 方正县| 米脂县| 扎兰屯市| 凤城市| 瑞金市| 浏阳市| 麦盖提县| 沧州市| 长宁区| 溆浦县| 洪湖市| 舟山市| 黄骅市| 女性| 巧家县| 定日县| 邻水| 射洪县| 顺昌县| 故城县| 吉隆县| 井冈山市| 迁安市| 蒙山县| 土默特左旗| 高唐县| 沿河| 建瓯市| 武鸣县| 哈密市| 杨浦区| 平阴县| 永丰县| 阳信县| 井冈山市|