亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

工廠和抽象工廠模式

objc94 / 1328人閱讀

摘要:工廠類沒有此型號的產(chǎn)品測試類根據(jù)傳入的參數(shù)來創(chuàng)建具體的類產(chǎn)品名產(chǎn)品名產(chǎn)品名運行結(jié)果產(chǎn)品名產(chǎn)品名產(chǎn)品名抽象工廠抽象工廠示意圖抽象工廠抽象工廠實例工廠接口工廠實現(xiàn)類工廠生產(chǎn)不支持此類型的產(chǎn)品工程一樣,就不寫了。

工廠和抽象工廠模式 1. 簡介

先來簡單說一下什么是工廠模式和抽象工廠模式:

工廠模式:一般我們通過new創(chuàng)建一個產(chǎn)品類,為了簡化操作我們可以創(chuàng)建一個工廠類,由這個工廠類負責(zé)創(chuàng)建所需要的產(chǎn)品;

抽象工廠模式:如果產(chǎn)品的種類多了,使用一個工廠可能不夠,會導(dǎo)致邏輯復(fù)雜,可讀性差等。這個時候我們可以定義一個工廠接口,通過多個工廠實現(xiàn)類來處理不同的產(chǎn)品。

2. 普通工廠 2.1 普通工廠UML

2.2 普通工廠實例

產(chǎn)品接口:

package com.wangjun.designPattern.factory;

public interface IProduct {
    
    public String info();
    
}

產(chǎn)品實現(xiàn)類:

package com.wangjun.designPattern.factory;

public class Product1 implements IProduct {

    @Override
    public String info() {
        return "Product1";
    }

}

其余4個Product類一樣,就不寫了。

工廠類:

package com.wangjun.designPattern.factory;

public class ProductFactory {
    
    public static IProduct createProduct(int type) {
        
        switch(type) {
            case 1:
                return new Product1();
            case 2:
                return new Product2();
            case 3:
                return new Product3();
            case 4:
                return new Product4();
            case 5:
                return new Product5();
            default:
                System.out.println("沒有此型號的產(chǎn)品");
                return null;
        }
    }

}

測試類:

package com.wangjun.designPattern.factory;

public class Main {

    public static void main(String[] args) {
         //根據(jù)傳入的參數(shù)來創(chuàng)建具體的類
        IProduct product1 = ProductFactory.createProduct(1);
        System.out.println("產(chǎn)品名:" + product1.info());
        
        IProduct product2 = ProductFactory.createProduct(2);
        System.out.println("產(chǎn)品名:" + product2.info());
        
        IProduct product3 = ProductFactory.createProduct(3);
        System.out.println("產(chǎn)品名:" + product3.info());
    }

}

運行結(jié)果:

產(chǎn)品名:Product1
產(chǎn)品名:Product2
產(chǎn)品名:Product3
3. 抽象工廠 3.1 抽象工廠示意圖

3.2 抽象工廠UML

3.3 抽象工廠實例

工廠接口:

package com.wangjun.designPattern.abstractFactory;

public interface IFactory {
    
    public IProduct createProduct(int type);

}

工廠實現(xiàn)類:

package com.wangjun.designPattern.abstractFactory;

public class Factory1 implements IFactory {

    @Override
    public IProduct createProduct(int type) {
        System.out.println("工廠1生產(chǎn)");
        if(type == 1) {
            return new Product1();
        }else if(type == 2) {
            return new Product2();
        }else {
            System.out.println("不支持此類型的產(chǎn)品");
        }
        return null;
    }

}

工程2,3一樣,就不寫了。

產(chǎn)品接口:

package com.wangjun.designPattern.abstractFactory;

public interface IProduct {
    
    public String info();
    
}

產(chǎn)品實現(xiàn)類:

package com.wangjun.designPattern.abstractFactory;

public class Product1 implements IProduct {

    @Override
    public String info() {
        return "Product1";
    }

}

產(chǎn)品實現(xiàn)類2,3,4,5,6一樣就不寫了。

提供給外部調(diào)用的工程類:

package com.wangjun.designPattern.abstractFactory;

public class ProductFactory {
    
    public static IProduct createProduct(int type) {
        IFactory factory = null;
        
        //1,2類型使用工廠1生成;3,4類型使用工廠2生產(chǎn);5,6類型使用工廠3生產(chǎn)
        if(type >= 1 && type <= 2) {
            factory = new Factory1();
        }else if(type >=3 && type <= 4) {
            factory = new Factory2();
        }else if(type >= 5 && type <= 6) {
            factory = new Factory3();
        }else {
            System.out.println("不支持此類型的產(chǎn)品");
            return null;
        }
        
        IProduct product = factory.createProduct(type);
        
        return product;
    }

}

測試類:

package com.wangjun.designPattern.abstractFactory;

public class Main {

    public static void main(String[] args) {
        IProduct product1 = ProductFactory.createProduct(1);
        System.out.println("產(chǎn)品名:" + product1.info());
        
        IProduct product2 = ProductFactory.createProduct(4);
        System.out.println("產(chǎn)品名:" + product2.info());
        
        IProduct product3 = ProductFactory.createProduct(5);
        System.out.println("產(chǎn)品名:" + product3.info());
    }

}

打印輸出:

工廠1生產(chǎn)
產(chǎn)品名:Product1
工廠2生產(chǎn)
產(chǎn)品名:Product4
工廠3生產(chǎn)
產(chǎn)品名:Product5

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/77230.html

相關(guān)文章

  • JavaScript工廠模式

    摘要:基于工廠角色和產(chǎn)品角色的多態(tài)性設(shè)計是工廠方法模式的關(guān)鍵。工廠方法模式之所以又被稱為多態(tài)工廠模式,是因為所有的具體工廠類都具有同一抽象父類。工廠方法模式總結(jié)工廠方法模式是簡單工廠模式的進一步抽象和推廣。 JavaScript工廠模式 首先需要說一下工廠模式。工廠模式根據(jù)抽象程度的不同分為三種 簡單工廠模式 工廠方法模式 抽象工廠模式 1.簡單工廠模式 簡單工廠模式:又稱為靜態(tài)工廠方法...

    oujie 評論0 收藏0
  • Java 設(shè)計模式 簡單工廠 工廠模式 抽象工廠

    摘要:簡單工廠,工廠模式和抽象工廠。不要認為簡單工廠是用就覺得一無是處,也不要覺得抽象工廠比較高大上就到處套。 工廠模式,實際上也會根據(jù)業(yè)務(wù)情景不同會有不同的實現(xiàn)方式。一般分為3種。簡單工廠,工廠模式和抽象工廠。顧名思義,這三種從簡單到抽象,名稱越來越高大上,實現(xiàn)方式肯定是越來越復(fù)雜 結(jié)論1:三種工廠的實現(xiàn)越來越復(fù)雜 簡單工廠 public class Factory { // 定義...

    CocoaChina 評論0 收藏0
  • js常用設(shè)計模式實現(xiàn)(二)工廠模式抽象工廠模式

    摘要:抽象工廠模式可以向客戶端提供一個接口,使客戶端在不必指定產(chǎn)品的具體的情況下,創(chuàng)建多個產(chǎn)品族中的產(chǎn)品對象。前邊的兩個都是直接生產(chǎn)實例的,開始以為抽象工廠也是但是后來發(fā)現(xiàn)抽象工廠更像是生產(chǎn)工廠,其實抽象工廠其實是實現(xiàn)子類繼承父類的方法。 創(chuàng)建型模式 創(chuàng)建型模式是對一個類的實例化過程進行了抽象,把對象的創(chuàng)建和對象的使用進行了分離 上一篇介紹了下單例模式,這一篇介紹一下工廠模式和抽象工廠模式,...

    meteor199 評論0 收藏0
  • PHP高級特性-反射Reflection以及Factory工廠設(shè)計模式的結(jié)合使用[代碼實例]

    摘要:反射提供給面向?qū)ο缶幊炭梢宰允〉哪芰Γ捶瓷?。在簡單工廠模式中,根據(jù)傳遞的參數(shù)來返回不同的類的實例簡單工廠模式又稱為靜態(tài)工廠方法模式。也就是簡單工廠模式工廠工廠類。PHP高級特性-反射以及工廠設(shè)計模式的結(jié)合使用 [結(jié)合 Laravel-Admin 代碼實例講解]利用反射來實現(xiàn)工廠模式的生產(chǎn)而無需創(chuàng)建特定的工廠類本文地址http://janrs.com/?p=833轉(zhuǎn)載無需經(jīng)過作者本人授權(quán)轉(zhuǎn)載...

    番茄西紅柿 評論0 收藏2637
  • Java 設(shè)計模式工廠模式

    摘要:與以往的使用的方式不同,工廠模式使用工廠實例化對象。抽象工廠模式亮相抽象工廠模式抽象工廠模式提供一個接口,用于創(chuàng)建相關(guān)或依賴對象的家族,而不需要明確指定具體類。 寫在前面 這篇博文介紹設(shè)計模式的形式將與其他篇博文不太一樣,這里我們將從一個問題入手,逐步了解到簡單工廠、工廠方法與抽象工廠模式。 PS:這篇博文涉及的內(nèi)容較多,所以篇幅有點長,請耐心閱讀。 為什么要使用工廠模式? 在 OO ...

    Jochen 評論0 收藏0
  • python設(shè)計模式-抽象工廠模式

    摘要:源碼參考抽象工廠模式抽象工廠模式提供一個接口,用于創(chuàng)建相關(guān)或依賴對象的家族,而不需要指定具體類。工廠方法模式和抽象工廠模式如何選擇開始的時候,可以選擇工廠方法模式,因為他很簡單只需要繼承,并實現(xiàn)工廠方法即可。 問題:在上一篇 python設(shè)計模式:工廠方法模式我們嘗試使用工廠方法創(chuàng)建了披薩店,現(xiàn)在為了保證披薩加盟店也能有良好的聲譽,我們需要統(tǒng)一原材料,這個該如何做呢? 為了確保每家加盟...

    seal_de 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<