<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆 - 40, 文章 - 0, 評論 - 20, 引用 - 0
    數據加載中……

    23種面向對象的設計模式----Factory method模式


    Factory method,工廠方法模式,定義一個用于創建對象的接口,讓字類決定實例化哪一個類。也就是使一個類的實例化延遲到其子類,提供一種方法使對象創建變得多態。
    下面是我寫的一個例子,如有兩種工人,car worker和bus worker,所生成的產品分別是car 和 bus,我按照Factory method 的實現如下:


    --先定義car 和 bus 的父類,都是一種產品
    package Factory;
    public class Product {
     
     public  void whoami(){
      System.out.println("I am a product!");
     }
    }

    --Car 類
    package Factory;
    public class Car extends Product { 
     public Car() {
     } 
     public void whoami(){
      System.out.println("I am a car!");
     } 
    }
    --Bus 類
    package Factory;
    public class Bus extends Product { 
     public Bus() {
     } 
     public void whoami(){
      System.out.println("I am a bus!");
     }
    }
    --定義CarWorker和BusWorker的父類 worker
    package Factory;
    public abstract class Worker { 
     private Product theProduct;
     public abstract Product  createProduct(); 
     public void work(){
      theProduct = createProduct();
     }
     public void showMessage(){
      this.theProduct.whoami();
     }
    }
    --Carworker
    package Factory;
    public class CarWorker extends Worker { 
     public Product createProduct(){
       return new Car();
     }
    }
    --BusWorker
    package Factory;
    public class BusWorker extends Worker { 
     public Product  createProduct(){
      return new Bus();
     }
    }
    --下面看看具體的調用
    package Factory;
    public class TestAll {

     public static void main(String [] argv){ 
      Worker  worker = new CarWorker();
      worker.work();
      worker.showMessage();
      
      Worker  worker1 = new BusWorker();
      worker1.work();
      worker1.showMessage(); 
     } 
    }
    可以看到雖然這樣實現有一些麻煩,如新加一種產品時,就必須從Product類創建一個子類,但是這樣做的
    好處也是顯而易見的,會給你系統帶來更大的可擴展性和盡量少的修改量,再添加一種產品一種工人的時候,對以前的代碼是不必做任何修改的。

    <個人觀點,僅作參考>

     

    posted on 2005-11-13 21:35 月亮 閱讀(924) 評論(1)  編輯  收藏

    評論

    # re: 23種面向對象的設計模式----Factory method模式  回復  更多評論   

    疑問:theProduct 私有變量對CarWorker和BusWorker是無效的?
    2006-08-11 22:42 | hao

    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 亚洲日本视频在线观看| 久久久久亚洲av无码专区导航| 中文字幕无码精品亚洲资源网久久 | 久久久久亚洲AV成人片| 国产精品免费无遮挡无码永久视频 | 国产高清在线精品免费软件| 亚洲成av人在线观看网站| 午夜两性色视频免费网站| 亚洲第一街区偷拍街拍| 香蕉视频在线观看免费国产婷婷 | 国产AV无码专区亚洲Av| 免费观看91视频| 久久久久亚洲精品日久生情| 国产大片91精品免费观看不卡| 亚洲av产在线精品亚洲第一站| 黄色成人网站免费无码av| 亚洲AV无码专区在线观看成人 | 国产免费一区二区三区VR| 男女猛烈激情xx00免费视频| 久久久青草青青国产亚洲免观| 中文字幕看片在线a免费| 亚洲精品免费视频| 精品成在人线AV无码免费看| 亚洲情A成黄在线观看动漫软件 | 精品久久亚洲中文无码| 国产精品二区三区免费播放心| 农村寡妇一级毛片免费看视频| 亚洲αv在线精品糸列| 免费人成网站在线观看10分钟| 亚洲另类无码专区丝袜| 亚洲Av无码乱码在线观看性色| 高清永久免费观看| 亚洲第一成年网站大全亚洲| 永久免费视频v片www| 巨胸喷奶水视频www免费视频| 亚洲视频欧洲视频| 亚洲AV无码一区二区三区在线观看| a级成人免费毛片完整版| 亚洲人成综合在线播放| 亚洲国产精品成人网址天堂| 十九岁在线观看免费完整版电影|