Java抽象工廠模式案例

文采杰出發表於2024-04-17
  • 抽象工廠模式是一種建立型設計模式,它允許你建立一系列相關或相互依賴的物件,而無需指定它們具體的類。
  • 首先,我們定義兩個產品介面:
public interface ProductA {
    void use();
}

public interface ProductB {
    void use();
}
  • 接下來,我們建立兩個實現這些介面的具體產品類:
public class ProductA1 implements ProductA {
    @Override
    public void use() {
        System.out.println("Using Product A1");
    }
}
public class ProductA2 implements ProductA {
    @Override
    public void use() {
        System.out.println("Using Product A2");
    }
}
public class ProductB1 implements ProductB {
    @Override
    public void use() {
        System.out.println("Using Product B1");
    }
}
public class ProductB2 implements ProductB {
    @Override
    public void use() {
        System.out.println("Using Product B2");
    }
}
  • 然後,我們建立一個抽象工廠介面,其中包含建立產品的方法:
public interface AbstractFactory {
    ProductA createProductA();
    ProductB createProductB();
}
  • 現在,我們建立兩個實現抽象工廠介面的具體工廠類。每個工廠類負責建立一組相關或相互依賴的產品:
public class Factory1 implements AbstractFactory {
    @Override
    public ProductA createProductA() {
        return new ProductA1();
    }

    @Override
    public ProductB createProductB() {
        return new ProductB1();
    }
}
public class Factory2 implements AbstractFactory {
    @Override
    public ProductA createProductA() {
        return new ProductA2();
    }

    @Override
    public ProductB createProductB() {
        return new ProductB2();
    }
}
  • 最後,我們可以編寫一個客戶端程式碼來演示如何使用這些類和介面:
public class Client {
    public static void main(String[] args) {
        // 建立第一個工廠物件
        AbstractFactory factory1 = new Factory1();
        ProductA productA1 = factory1.createProductA();
        ProductB productB1 = factory1.createProductB();
        
        productA1.use();
        productB1.use();
        
        // 建立第二個工廠物件
        AbstractFactory factory2 = new Factory2();
        ProductA productA2 = factory2.createProductA();
        ProductB productB2 = factory2.createProductB();
        
        productA2.use();
        productB2.use();
    }
}
  • 執行客戶端程式碼後,您將看到以下輸出:
Using Product A1
Using Product B1
Using Product A2
Using Product B2

透過抽象工廠,您可以輕鬆地建立一組相關或相互依賴的物件,而無需關心具體的實現細節。

相關文章