设计模式 – 抽象工厂模式(Abstract Factory Pattern)

内容纲要

抽象工厂模式(Abstract Factory Pattern)是一种创建型设计模式,它提供了一种创建一组相关或互相依赖的对象的方式,而无需指定它们具体的类。抽象工厂模式允许我们创建对象的组合,这些对象共同实现一个共同的目标或遵循一定的设计规范。

以下是一个简单的Java实现:

  1. 首先,我们创建两个产品接口:
public interface ProductA {
    void showProductAInfo();
}

public interface ProductB {
    void showProductBInfo();
}
  1. 创建具体的产品类实现这些产品接口:
public class ConcreteProductA1 implements ProductA {
    @Override
    public void showProductAInfo() {
        System.out.println("This is ConcreteProductA1");
    }
}

public class ConcreteProductA2 implements ProductA {
    @Override
    public void showProductAInfo() {
        System.out.println("This is ConcreteProductA2");
    }
}

public class ConcreteProductB1 implements ProductB {
    @Override
    public void showProductBInfo() {
        System.out.println("This is ConcreteProductB1");
    }
}

public class ConcreteProductB2 implements ProductB {
    @Override
    public void showProductBInfo() {
        System.out.println("This is ConcreteProductB2");
    }
}
  1. 创建一个抽象工厂接口,定义创建产品的方法:
public interface AbstractFactory {
    ProductA createProductA();
    ProductB createProductB();
}
  1. 创建具体的工厂类实现抽象工厂接口,分别用于创建不同的产品组合:
public class ConcreteFactory1 implements AbstractFactory {
    @Override
    public ProductA createProductA() {
        return new ConcreteProductA1();
    }

    @Override
    public ProductB createProductB() {
        return new ConcreteProductB1();
    }
}

public class ConcreteFactory2 implements AbstractFactory {
    @Override
    public ProductA createProductA() {
        return new ConcreteProductA2();
    }

    @Override
    public ProductB createProductB() {
        return new ConcreteProductB2();
    }
}
  1. 使用抽象工厂模式创建对象:
public class Main {
    public static void main(String[] args) {
        AbstractFactory factory1 = new ConcreteFactory1();
        ProductA productA1 = factory1.createProductA();
        ProductB productB1 = factory1.createProductB();
        productA1.showProductAInfo();
        productB1.showProductBInfo();

        AbstractFactory factory2 = new ConcreteFactory2();
        ProductA productA2 = factory2.createProductA();
        ProductB productB2 = factory2.createProductB();
        productA2.showProductAInfo();
        productB2.showProductBInfo();
    }
}

运行上述代码,你将看到:

This is ConcreteProductA1
This is ConcreteProductB1
This is ConcreteProductA2
This is ConcreteProductB2

抽象工厂模式提供了一种创建一组相关对象的方法,它将对象的创建过程封装起来,使得客户端不需要知道具体的实现细节。当需要添加新的产品族时,只需要实现一个新的具体工厂类,并实现相应的产品接口即可,这样可以避免修改现有的代码,提高代码的可扩展性和可维护性。同时,抽象工厂模式可以保证应用程序的松耦合,使得应用程序只依赖于抽象接口,而不依赖于具体实现。

Leave a Comment

您的电子邮箱地址不会被公开。 必填项已用*标注

close
arrow_upward