以下是使用Java编写抽象工厂模式(Abstract Factory)的示例代码:
// 抽象产品类
abstract class Product {
public abstract void show();
}
// 具体产品类
class ConcreteProductA extends Product {
@Override
public void show() {
System.out.println("ConcreteProductA");
}
}
class ConcreteProductB extends Product {
@Override
public void show() {
System.out.println("ConcreteProductB");
}
}
// 抽象工厂类
abstract class Factory {
public abstract Product createProduct();
}
// 具体工厂类
class ConcreteFactoryA extends Factory {
@Override
public Product createProduct() {
return new ConcreteProductA();
}
}
class ConcreteFactoryB extends Factory {
@Override
public Product createProduct() {
return new ConcreteProductB();
}
}
// 客户端代码
public class Client {
public static void main(String[] args) {
Factory factoryA = new ConcreteFactoryA();
Factory factoryB = new ConcreteFactoryB();
Product productA = factoryA.createProduct();
Product productB = factoryB.createProduct();
productA.show();
productB.show();
}
}
在这个示例中,我们定义了一个抽象产品类Product,以及两个具体产品类ConcreteProductA和ConcreteProductB。具体产品类实现了Product类中的show方法,用于显示产品信息。我们还定义了一个抽象工厂类Factory,以及两个具体工厂类ConcreteFactoryA和ConcreteFactoryB。具体工厂类实现了Factory类中的createProduct方法,用于创建具体产品对象。客户端代码Client中,我们创建了两个具体工厂类对象factoryA和factoryB,并分别调用createProduct方法来创建具体产品对象productA和productB,然后分别调用show方法来显示产品信息。
通过使用抽象工厂模式,我们可以轻松地扩展产品工厂,而无需修改客户端代码。这使得产品工厂更加灵活,可以创建不同类型的产品。