抽象工廠模式--java代碼實現


抽象工廠模式

  抽象工廠模式,對方法工廠模式進行抽象。世界各地都有自己的水果園,我們將這些水果園抽象為一個水果園接口,在中國、英國和美國都有水果園,種植不同的水果,比如蘋果、香蕉和梨等。這里將蘋果進行抽象,所以,蘋果又分為中國蘋果,英國蘋果和美國蘋果。中國的水果園中有蘋果、香蕉和梨等。抽象工廠中聲明生產蘋果、香蕉和梨等水果,那么具體的工廠相當於中國、英國和美國的水果園,各個水果園負責生產水果、香蕉和梨等。

1.相關術語

  • 產品等級結構:產品的繼承結構,與類的繼承相似。例如蘋果是一個抽象的類,那么中國蘋果、美國蘋果和英國的蘋果就是其子類。

  • 產品族:指同一個工廠生產的,位於不同的產品等級結構的一組產品。例如蘋果、香蕉和梨都產自中國,水果的等級結構不同,構成一個產品族。

  • 抽象工廠:是一個接口,抽象工廠模式的核心,包含對多個產品等級結構的聲明,任何工廠類都必須實現這個接口。

  • 具體工廠:是抽象工廠的實現,負責實例化某個產品族中的產品對象。例如中國工廠生產蘋果、香蕉和梨這些產品。

2.產品族和產品等級結構示意圖

 

3.抽象工廠模式示意圖

 

4.創建Fruit接口、Apple抽象類、ChinaApple類等

Fruit(interface):

public interface Fruit {
    public void get();
}

Apple抽象類:

public abstract class Apple implements Fruit{
    public abstract void get();
}

ChinaApple類:

public class ChinaApple extends Apple {

    @Override
    public void get() {
        System.out.println("中國的蘋果...");
    }
}

5.創建抽象工廠、具體工廠

抽象工廠:

public interface FruitFactory {
    //實例化蘋果
    public Fruit getApple();
    //實例化香蕉
    public Fruit getBanana();
}

具體工廠:

public class ChinaFactory implements FruitFactory {

    @Override
    public Fruit getApple() {
        return new ChinaApple();
    }
    
    @Override
    public Fruit getBanana() {
        return new ChinaBanana();
    }
}

6.生產水果

MainClass:

public class MainClass {

    public static void main(String[] args){
        //創建中國工廠
        FruitFactory chinaFactory = new ChinaFactory();
        //通過中國工廠生產中國蘋果實例
        Fruit apple = chinaFactory.getApple();
        apple.get();
        //通過中國工廠生產中國香蕉實例
        Fruit banana = chinaFactory.getBanana();
        banana.get();        
        
        //創建英國工廠
        FruitFactory englandFactory = new EnglandFactory();
        //通過英國工廠生產英國蘋果實例
        Fruit apple1 = englandFactory.getApple();
        apple1.get();
        //通過英國工廠生產英國香蕉實例
        Fruit banana2 = englandFactory.getBanana();
        banana2.get();
    }
}

7.結果

 

8.總結

  模式來源於生活。抽象工廠模式,對工廠方法模式進行了升級。對產品進行了進一步的抽象,同時改變了抽象工廠和具體工廠的設計模式。這種模式便於橫向的擴展,例如我們想添加一個美國工廠來生產蘋果和香蕉,只需要新建美國蘋果,美國香蕉和生產這兩種水果的具體工廠--美國工廠。缺點就是不利於縱向的擴展,例如我們想在工廠中生產梨,這就需要修改抽象工廠,各個具體工廠也同時需要修改。

  參考B站視頻https://www.bilibili.com/video/av34162848


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM