炒冷飯系列:設計模式 抽象工廠模式

炒冷飯系列:設計模式 抽象工廠模式

摘要: 原創出處: http://www.cnblogs.com/Alandre/ 泥沙磚瓦漿木匠 但願轉載,保留摘要,謝謝!html

親愛我,孝何難;親惡我,孝方賢。

1、什麼是抽象工廠模式java

2、模式中包含的角色及其職責設計模式

3、抽象工廠模式實現app

1、什麼是抽象工廠模式

抽象工廠模式是全部形態的工廠模式中最爲抽象和最其通常性的。抽象工廠模式能夠向客戶端 提供一個接口,使得客戶端在沒必要指定產品的具 體類型的狀況下,可以建立多個產品族的產品對象。ide

產品族和產品等級結構。測試

2、模式中包含的角色及其職責

1.抽象工廠(Creator)角色
抽象工廠模式的核心,包含對多個產品結構的聲明,任何工廠類都必須實現這個接口。ui

2.具體工廠( Concrete Creator)角色
具體工廠類是抽象工廠的一個實現,負責實例化某個產品族中的產品對象。spa

3.抽象(Product)角色
抽象模式所建立的全部對象的父類,它負責描述全部實例所共有的公共接口。設計

4.具體產品(Concrete Product)角色
抽象模式所建立的具體實例對象code

注意:抽象工廠中方法對應產品結構,具體工廠對應產品族。

在咱們上兩篇:簡單工廠模式 和 工廠方法模式 奠基了抽象工廠模式的基礎。

3、抽象工廠模式實現

項目結構圖:
                             image

部分類圖:

                 image

Fruit.java Apple.java Banana.java

複製代碼

public interface Fruit
{    /*
     * 採集     */
    public void get();
}public class Apple implements Fruit
{    /*
     * 採集     */
    public void get()
    {
        System.out.println("採集Apples");
    }
}public class Banana implements Fruit
{    /*
     *採集     */
    public void get()
    {
        System.out.println("採集Banana");
    }
}

複製代碼

 

NorthApple.java SouthApple.java NorthBanana.java SouthBanana.java

複製代碼

public class NorthApple extends Apple
{

    @Override    public void get()
    {
        System.out.println("北方蘋果採集");
    }

}public class SouthApple extends Apple
{

    @Override    public void get()
    {
        System.out.println("採集南方蘋果");
    }

}public class NorthBanana extends Banana
{

    @Override    public void get()
    {
        System.out.println("北方Banana採集");
    }

}public class SouthBanana extends Banana
{

    @Override    public void get()
    {
        System.out.println("採集南方Banana");
    }

}

複製代碼

下面是構建的相對應產品的工廠:NorthFruitFactory.java 和 SouthFruitFactory.java 

複製代碼

public class NorthFruitFactory implements FruitFactory
{

    @Override    public Fruit getApple()
    {        return new NorthApple();
    }

    @Override    public Fruit getBanana()
    {        return new NorthBanana();
    }

}public class SouthFruitFactory implements FruitFactory
{

    @Override    public Fruit getApple()
    {        return new SouthApple();
    }

    @Override    public Fruit getBanana()
    {        return new SouthBanana();
    }

}

複製代碼

 

測試案例:

複製代碼

public class MainClass
{    public static void main(String[] args)
    {
        FruitFactory nFactory = new NorthFruitFactory();
        Fruit apple1 = nFactory.getApple();
        apple1.get();
        
        Fruit banana1 = nFactory.getBanana();
        banana1.get();
        
        FruitFactory sFactory = new SouthFruitFactory();
        Fruit apple2 = sFactory.getApple();
        apple2.get();
        
        Fruit banana2 = sFactory.getBanana();
        banana2.get();
    }
}

複製代碼

能夠看到下面的輸出:

北方蘋果採集
北方Banana採集
採集南方蘋果
採集南方Banana

工做原理分析:其實就像產品一個分類,分塊。一類的產品分塊到一塊兒。產品和工廠都實現抽象類或接口,並重寫其工做內容。

4、感謝知識來源和小結

1、什麼是抽象工廠模式

2、模式中包含的角色及其職責

三.抽象工廠模式實現

來自:java設計模式

如以上文章或連接對你有幫助的話,別忘了在文章按鈕或到頁面右下角點擊 「贊一個」 按鈕哦。你也能夠點擊頁面右邊「分享」懸浮按鈕哦,讓更多的人閱讀這篇文章。

親有過 諫使更 怡吾色 柔吾聲 諫不入 悅復諫 號泣隨 撻無怨
相關文章
相關標籤/搜索