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

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

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

    創(chuàng)建模式之SimpleFactory——簡(jiǎn)單工廠(chǎng)模式

    1、簡(jiǎn)介
        簡(jiǎn)單工廠(chǎng)模式是一個(gè)對(duì)象創(chuàng)建型模式,它定義了一個(gè)用于創(chuàng)建對(duì)象的接口,讓子類(lèi)決定實(shí)例化哪一個(gè)類(lèi),它使得一個(gè)類(lèi)的實(shí)例化延遲到了子類(lèi)。
    2、使用場(chǎng)景
        為什么要使用工廠(chǎng)模式,它能幫助解決什么問(wèn)題?面向?qū)ο蟮姆庋b(Encapsulation)和分派(Delegation)告訴我們,盡量將長(zhǎng)的代碼分派“切割”成每段,將每段再“封裝”起來(lái)(減少段和段之間偶合聯(lián)系性),這樣就會(huì)將風(fēng)險(xiǎn)分散,以后如果需要修改,只要更改每段,不會(huì)再發(fā)生牽一動(dòng)百的事情了。使用工廠(chǎng)模式,能夠?qū)?chuàng)建實(shí)例和使用實(shí)例分開(kāi),封裝了使用者將得到那些具體類(lèi)的信息,并且隱藏了這些類(lèi)的實(shí)例是如何被創(chuàng)建和放在一起的。
    3、類(lèi)圖

    4、實(shí)例
        先看看Product接口:
    package simpleFactory;

    public interface Product {
       
    public void doSth();
    }

       
        再看看和他關(guān)聯(lián)的具體的類(lèi):
    package simpleFactory;

    public class ConcreteProduct1 implements Product {
        
    public void doSth(){
            System.out.print(
    "this is product1");
        }
    }

    package simpleFactory;

    public class ConcreteProduct2 implements Product {
            
    public void doSth(){
            System.out.print(
    "this is product2");
        }
    }

    package simpleFactory;

    public class ConcreteProduct3 implements Product {
            
    public void doSth(){
            System.out.print(
    "this is product3");
        }
    }

    package simpleFactory;

    public class ConcreteProduct4 implements Product {
            
    public void doSth(){
            System.out.print(
    "this is product4");
        }
    }

        最后是工廠(chǎng)方法的核心類(lèi):
    package simpleFactory;

    public class Creator {
        
    public static Product productFactory(int which) {

            
    switch(which){
            
    case 1:
                
    return new ConcreteProduct1();
                
    break;
            
    case 2:
                
    return new ConcreteProduct2();
                
    break;
            
    case 3:
                
    return  new ConcreteProduct3();
                
    break;
            
    case 4:
                
    return  new ConcreteProduct4();
                
    break;
            
    default:
                
    return null;
            }
        }   
    }

    5、優(yōu)缺點(diǎn)
        優(yōu)點(diǎn)如下:
        客戶(hù)類(lèi)和工廠(chǎng)類(lèi)分開(kāi)。消費(fèi)者任何時(shí)候需要某種產(chǎn)品,只需向工廠(chǎng)請(qǐng)求即可。消費(fèi)者無(wú)須修改就可以接納新產(chǎn)品。
        缺點(diǎn)也很明顯:
        當(dāng)產(chǎn)品修改時(shí),工廠(chǎng)類(lèi)也要做相應(yīng)的修改。有點(diǎn)違背了開(kāi)—閉原則。
       

    posted on 2008-05-13 16:36 云淡風(fēng)清 閱讀(1516) 評(píng)論(1)  編輯  收藏 所屬分類(lèi): Design Patterns

    評(píng)論

    # re: 創(chuàng)建模式——簡(jiǎn)單工廠(chǎng)模式 2008-05-16 15:37 網(wǎng)上買(mǎi)書(shū)

    為什么要使用工廠(chǎng)模式,它能幫助解決什么問(wèn)題?分析的不錯(cuò)  回復(fù)  更多評(píng)論   

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

    導(dǎo)航

    統(tǒng)計(jì)

    常用鏈接

    留言簿(1)

    隨筆分類(lèi)(15)

    隨筆檔案(15)

    收藏夾(1)

    搜索

    最新評(píng)論

    閱讀排行榜

    評(píng)論排行榜

    主站蜘蛛池模板: 亚洲国产成人九九综合| 亚洲国产精品一区二区三区在线观看| 中文字幕亚洲综合精品一区| 亚洲AV无码专区在线电影成人| 日韩精品在线免费观看| 国产免费av一区二区三区| 亚洲毛片免费视频| 亚洲国产精品免费观看| 亚洲成av人在线视| 精品无码一级毛片免费视频观看 | 看全色黄大色大片免费久久| 91亚洲自偷在线观看国产馆| 可以免费观看的一级毛片| 免费无码婬片aaa直播表情| 日本高清免费不卡在线| 亚洲AV成人精品日韩一区| 国产亚洲人成网站观看| 日韩a级无码免费视频| 亚洲乱码精品久久久久..| 国产精品成人免费视频网站京东| 亚洲一区二区三区在线| 操美女视频免费网站| 亚洲日韩精品无码专区加勒比 | 亚洲国产精品高清久久久| 日韩电影免费在线| 99视频免费观看| 亚洲视频一区二区三区| 亚洲欧洲自拍拍偷精品 美利坚| 精品国产日韩亚洲一区91| 四虎永久免费影院| 无码乱肉视频免费大全合集| 国产情侣久久久久aⅴ免费| 亚洲国产精品成人久久久| 好吊妞在线新免费视频| 男女猛烈无遮掩视频免费软件| 亚洲欧洲另类春色校园小说| 亚洲人成人网站色www| 国产1024精品视频专区免费| 国产精品亚洲一区二区三区| 久久久久亚洲AV无码专区桃色| 丝袜捆绑调教视频免费区|