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

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

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

    創(chuàng)建模式之FactoryMethod——工廠方法模式

    1、簡(jiǎn)介
          和簡(jiǎn)單工廠模式不同,核心工廠類不再負(fù)責(zé)所有產(chǎn)品的創(chuàng)建,而是將具體創(chuàng)建的工作交給子類去做,成為一個(gè)抽象工廠角色,僅負(fù)責(zé)給出具體工廠類必須實(shí)現(xiàn)的接口,而不接觸哪一個(gè)產(chǎn)品類應(yīng)當(dāng)被實(shí)例化這種細(xì)節(jié)。工廠方法模式可以允許很多具體工廠類從抽象工廠類中將創(chuàng)建行為繼承下來(lái),從而可以成為多個(gè)簡(jiǎn)單工廠模式的綜合,進(jìn)而推廣了簡(jiǎn)單工廠模式。

    2、使用場(chǎng)景及能解決的問(wèn)題
          一個(gè)系統(tǒng)要獨(dú)立于它的產(chǎn)品的創(chuàng)建、組合和表示時(shí)
          一個(gè)系統(tǒng)要由多個(gè)產(chǎn)品系列中的一個(gè)來(lái)配置時(shí)
          當(dāng)你要強(qiáng)調(diào)一系列相關(guān)的產(chǎn)品對(duì)象的設(shè)計(jì)以便進(jìn)行聯(lián)合使用時(shí)
          當(dāng)你提供一個(gè)產(chǎn)品類庫(kù),而只想顯示它們的接口而不是實(shí)現(xiàn)時(shí)

    3、類圖

    4、實(shí)例

    首先看看工廠類:

     

    public interface Factory {

      
    public Product create();

    }

     

    接下來(lái)看看工廠相關(guān)的實(shí)現(xiàn)類:

    public class ConcreteFactory1 implements Factory {

       
    public Product create(){

          
    return new ConcreteProduct1();

        }


    }


     

    public class ConcreteFactory2 implements Factory {

       
    public Product create(){

          
    return new ConcreteProduct2();

        }


    }

     

    產(chǎn)品類:

     

    public interface Product {

      
    public void getMessage();

    }

     

    產(chǎn)品相關(guān)的實(shí)現(xiàn)類:

     

    public class ConcreteProduct1 implements Product {

       
    public void getMessage(){

           System.out.print(
    "this is ConcretProduct1.");

        }


    }

     

     

    public class ConcreteProduct2 implements Product {

       
    public void getMessage(){

           System.out.print(
    "this is ConcretProduct2.");

        }


    }

     

    最后看看客戶端的相關(guān)類:

    public class Client {

    private static  Product product1;

       
    private static  Product product2;

       
    private static Factory factory2;

       
    private static Factory factory1;

    public static void main(String[] args){

    factory1 
    = new ConcreteFactory1();

           factory2 
    = new ConcreteFactory2();

    product1
    = factory1.create();

           product1.getMessage();

        product2
    = factory2.create();

           product2.getMessage();

       }


    }


    5、優(yōu)缺點(diǎn)

          完全支持開(kāi)-原則,如果需要增加一個(gè)新的產(chǎn)品,需要向系統(tǒng)中加入一個(gè)這個(gè)產(chǎn)品類以及相應(yīng)的工廠類,沒(méi)有必要修改客戶端。

     

    posted on 2008-05-28 13:58 云淡風(fēng)清 閱讀(244) 評(píng)論(0)  編輯  收藏 所屬分類: Design Patterns

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

    導(dǎo)航

    統(tǒng)計(jì)

    常用鏈接

    留言簿(1)

    隨筆分類(15)

    隨筆檔案(15)

    收藏夾(1)

    搜索

    最新評(píng)論

    閱讀排行榜

    評(píng)論排行榜

    主站蜘蛛池模板: 2017亚洲男人天堂一| 亚洲综合伊人久久大杳蕉| 欧洲乱码伦视频免费| 最近免费中文字幕高清大全| 日本人成在线视频免费播放| 老司机69精品成免费视频| 久久久精品免费视频| 91精品国产免费| 日本h在线精品免费观看| 国产片AV片永久免费观看| 免费a级毛片高清视频不卡| 最新免费jlzzjlzz在线播放| 免费看大黄高清网站视频在线| 日韩视频免费一区二区三区| 国产伦精品一区二区三区免费下载 | 美女被免费网站视频在线| 国产尤物在线视精品在亚洲| 特a级免费高清黄色片| 久青草视频在线观看免费| 国产精品白浆在线观看免费| 色影音免费色资源| 精品免费国产一区二区| 亚洲AV无码乱码在线观看性色扶| 亚洲真人无码永久在线| 亚洲邪恶天堂影院在线观看| 亚洲中文字幕久在线| 久久精品亚洲日本波多野结衣| 羞羞视频免费网站日本| 久久精品电影免费动漫| 免费观看黄网站在线播放| 亚洲国产中文字幕在线观看| 久久精品国产69国产精品亚洲| 亚洲色图综合网站| 亚洲av片在线观看| 狠狠躁狠狠爱免费视频无码| 亚欧免费一级毛片| 成人免费无码大片A毛片抽搐| 亚洲国产精品综合久久网络 | 好吊妞在线新免费视频| 亚洲欧洲久久久精品| 亚洲视频免费一区|