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

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

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

    夢幻之旅

    DEBUG - 天道酬勤

       :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
      671 隨筆 :: 6 文章 :: 256 評論 :: 0 Trackbacks
    工廠方法模式:
        該模式有一個抽象基類和若干個派生的具體工廠類,基類定義了一個虛工廠方法返回指定產品類的基類,派生類需要實現該虛方法并創建具體產品類返回。注意工廠方法的每個具體工廠只負責返回一種產品類。
        工廠和產品是一種一一對應的平行的關系.
         GOF對工廠方法模式的概擴是:定義一個創建對象的接口,讓子類決定實例化哪一個類,使一個類的實例化沿遲到其子類中.
    工廠方法的組成部份:
        1.產品基類
        2.具體產品
        3.工廠基類
        4.具體工廠基類
    工廠方法組成部份之間的關系:
       
    例子:
    手機基類:
    package methodFactory;

    /**
     * <ul>
     * <li>Title:[Phone]</li>
     * <li>Description: [手機抽象類]</li>
     * <li>Copyright 2009 Upengs Co., Ltd.</li>
     * <li>All right reserved.</li>
     * <li>Created by [Huyvanpull] [2011-8-1]</li>
     * <li>Midified by [modifier] [modified time]</li>
     * </ul>
     * 
    @version 1.0  
     
    */

    public abstract class Phone
    {
        
    /** 手機型號 */
        
    public String model;
        
        
    /**
         *<ul>
         *<li>Description:[構造方法]</li>
         *<ul>
         * 
    @param model
         
    */

        
    public Phone(String model)
        
    {
            
    this.model = model;
        }

        
        
    /**
         * <ul>
         * <li>Description:[打電話]</li>
         * <li>Created by [Huyvanpull] [2011-8-1]</li>
         * <li>Midified by [modifier] [modified time]</li>
         * </ul>
         
    */

        
    public abstract void call();
        
        
    /**
         * <ul>
         * <li>Description:[聽電話]</li>
         * <li>Created by [Huyvanpull] [2011-8-1]</li>
         * <li>Midified by [modifier] [modified time]</li>
         * </ul>
         
    */

        
    public abstract void answer();
        
        
    /**
         * <ul>
         * <li>Description:[發信息]</li>
         * <li>Created by [Huyvanpull] [2011-8-1]</li>
         * <li>Midified by [modifier] [modified time]</li>
         * </ul>
         
    */

        
    public abstract void sendMsg();
        
        
    /**
         * <ul>
         * <li>Description:[收信息]</li>
         * <li>Created by [Huyvanpull] [2011-8-1]</li>
         * <li>Midified by [modifier] [modified time]</li>
         * </ul>
         
    */

        
    public abstract void receiveMsg();
    }


    手機5233
    package methodFactory;

    /**
     * <ul>
     * <li>Title:[Nokia5233]</li>
     * <li>Description: [諾基亞5233]</li>
     * <li>Copyright 2009 Upengs Co., Ltd.</li>
     * <li>All right reserved.</li>
     * <li>Created by [Huyvanpull] [2011-8-1]</li>
     * <li>Midified by [modifier] [modified time]</li>
     * </ul>
     * 
    @version 1.0  
     
    */

    public class Nokia5233 extends Phone
    {

        
    public Nokia5233()
        
    {
            
    super("5233");
        }


        
    /* (non-Javadoc)
         * @see simpleFactory.Phone#answer()
         
    */

        
    public void answer()
        
    {
            System.out.println(
    this.model+"接聽電話");
        }


        
    /* (non-Javadoc)
         * @see simpleFactory.Phone#call()
         
    */

        
    public void call()
        
    {
            System.out.println(
    this.model+"打電話");
        }


        
    /* (non-Javadoc)
         * @see simpleFactory.Phone#receiveMsg()
         
    */

        
    public void receiveMsg()
        
    {
            System.out.println(
    this.model+"收短信");
        }


        
    /* (non-Javadoc)
         * @see simpleFactory.Phone#sendMsg()
         
    */

        
    public void sendMsg()
        
    {
            System.out.println(
    this.model+"發短信");
        }
       
    }



    手機5235
    package methodFactory;

    /**
     * <ul>
     * <li>Title:[Nokia5235]</li>
     * <li>Description: [諾基亞5235]</li>
     * <li>Copyright 2009 Upengs Co., Ltd.</li>
     * <li>All right reserved.</li>
     * <li>Created by [Huyvanpull] [2011-8-1]</li>
     * <li>Midified by [modifier] [modified time]</li>
     * </ul>
     * 
    @version 1.0  
     
    */

    public class Nokia5235  extends Phone
    {

        
    public Nokia5235()
        
    {
            
    super("5235");
        }


        
    /* (non-Javadoc)
         * @see simpleFactory.Phone#answer()
         
    */

        
    public void answer()
        
    {
            System.out.println(
    this.model+"接聽電話");
        }


        
    /* (non-Javadoc)
         * @see simpleFactory.Phone#call()
         
    */

        
    public void call()
        
    {
            System.out.println(
    this.model+"打電話");
        }


        
    /* (non-Javadoc)
         * @see simpleFactory.Phone#receiveMsg()
         
    */

        
    public void receiveMsg()
        
    {
            System.out.println(
    this.model+"收短信");
        }


        
    /* (non-Javadoc)
         * @see simpleFactory.Phone#sendMsg()
         
    */

        
    public void sendMsg()
        
    {
            System.out.println(
    this.model+"發短信");
        }
         
    }


    工廠基類
    package methodFactory;

    /**
     * <ul>
     * <li>Title:[PhoneFactory]</li>
     * <li>Description: [手機工廠]</li>
     * <li>Copyright 2009 Upengs Co., Ltd.</li>
     * <li>All right reserved.</li>
     * <li>Created by [Huyvanpull] [2011-8-1]</li>
     * <li>Midified by [modifier] [modified time]</li>
     * </ul>
     * 
    @version 1.0  
     
    */

    public abstract class PhoneFactory
    {   
        
    /**
         * <ul>
         * <li>Description:[創建手機]</li>
         * <li>Created by [Huyvanpull] [2011-8-1]</li>
         * <li>Midified by [modifier] [modified time]</li>
         * </ul>
         * 
    @return
         
    */

        
    public abstract Phone createPhone();
    }


    5233工廠
    package methodFactory;

    /**
     * <ul>
     * <li>Title:[Nokia5233Factory]</li>
     * <li>Description: [諾基亞5233工廠]</li>
     * <li>Copyright 2009 Upengs Co., Ltd.</li>
     * <li>All right reserved.</li>
     * <li>Created by [Huyvanpull] [2011-8-1]</li>
     * <li>Midified by [modifier] [modified time]</li>
     * </ul>
     * 
    @version 1.0  
     
    */

    public class Nokia5233Factory extends PhoneFactory
    {

        
    /* (non-Javadoc)
         * @see methodFactory.PhoneFactory#createPhone()
         
    */

        
    public Phone createPhone()
        
    {
            
    return new Nokia5233();
        }
       

    }


    5235工廠
    package methodFactory;

    public class Nokia5235Factory extends PhoneFactory
    {

        
    /* (non-Javadoc)
         * @see methodFactory.PhoneFactory#createPhone()
         
    */

        
    public Phone createPhone()
        
    {
            
    return new Nokia5235();
        }
     
    }



    測試類
    package methodFactory;

    /**
     * <ul>
     * <li>Title:[測試類]</li>
     * <li>Description: [type of functional description]</li>
     * <li>Copyright 2009 Upengs Co., Ltd.</li>
     * <li>All right reserved.</li>
     * <li>Created by [Huyvanpull] [2011-8-1]</li>
     * <li>Midified by [modifier] [modified time]</li>
     * </ul>
     * 
    @version 1.0  
     
    */

    public class Test
    {
        
        
    /**
         * <ul>
         * <li>Description:[method of functional description]</li>
         * <li>Created by [Huyvanpull] [2011-8-1]</li>
         * <li>Midified by [modifier] [modified time]</li>
         * </ul>
         * 
    @param args
         
    */

        
    public static void main(String[] args)
        
    {
            Phone phone 
    = new Nokia5233Factory().createPhone();
            phone.call();
            
            phone 
    = new Nokia5235Factory().createPhone();
            
            phone.receiveMsg();
        }

        
    }

    優點:
    使用工廠方法可以讓用戶的代碼和某一個特定類的了類的代碼解耦.
    工廠方法使用戶不必知道它所使用的對象是如何被創建出來的,只需要知道該對象有哪些方法.
    posted on 2011-08-01 23:10 HUIKK 閱讀(289) 評論(0)  編輯  收藏 所屬分類: Design Patterns
    主站蜘蛛池模板: www.999精品视频观看免费| 91久久亚洲国产成人精品性色| 亚洲人成免费网站| 免费一级毛suv好看的国产网站| 精品亚洲aⅴ在线观看| 国产成人高清亚洲| 国产精品黄页在线播放免费| 久久久精品2019免费观看| 9久热精品免费观看视频| 污污的视频在线免费观看| 国产午夜亚洲精品国产| 中文字幕亚洲精品资源网| 国产V亚洲V天堂A无码| 亚洲精品黄色视频在线观看免费资源| 成人免费无码大片A毛片抽搐色欲 成人免费无码大片a毛片 | 日本免费电影一区| 扒开双腿猛进入爽爽免费视频| 精品国产无限资源免费观看| 日韩中文字幕免费视频| 亚洲视频在线观看免费| 男人的天堂网免费网站| 香蕉成人免费看片视频app下载| 大地资源中文在线观看免费版| 99久久免费国产特黄| 热99RE久久精品这里都是精品免费| eeuss影院ss奇兵免费com| 精品97国产免费人成视频| 国产午夜成人免费看片无遮挡| 亚欧日韩毛片在线看免费网站| 91麻豆国产免费观看| 黄瓜视频高清在线看免费下载| 成年人免费观看视频网站| 国产真实伦在线视频免费观看| 亚洲国产综合精品中文字幕| 亚洲一区二区三区偷拍女厕 | 亚洲色欲色欲www| 欧美色欧美亚洲另类二区| 你懂得的在线观看免费视频| 51在线视频免费观看视频| 精品国产免费一区二区| 国产国拍亚洲精品福利|