- 抽象工廠模式是一種建立型設計模式,它允許你建立一系列相關或相互依賴的物件,而無需指定它們具體的類。
- 首先,我們定義兩個產品介面:
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
透過抽象工廠,您可以輕鬆地建立一組相關或相互依賴的物件,而無需關心具體的實現細節。