个人技术分享

工厂模式是一种创建型设计模式,它提供了一种将对象的创建与使用分离的方法。在工厂模式中,我们通过工厂类来创建对象,而不是直接在客户端代码中使用 new 关键字来创建对象。以下是一个简单的Java工厂模式示例代码:

产品接口

首先,我们定义一个产品接口,表示工厂要创建的对象:

// 产品接口
public interface Product {
    void operation();
}

具体产品类

然后,我们定义一些实现产品接口的具体产品类:

// 具体产品类A
public class ConcreteProductA implements Product {
    @Override
    public void operation() {
        System.out.println("Concrete Product A operation");
    }
}

// 具体产品类B
public class ConcreteProductB implements Product {
    @Override
    public void operation() {
        System.out.println("Concrete Product B operation");
    }
}

工厂接口

接着,我们定义一个工厂接口,用于创建产品:

// 工厂接口
public interface Factory {
    Product createProduct();
}

具体工厂类

最后,我们定义具体的工厂类来创建产品对象:

// 具体工厂类A,用于创建具体产品类A的实例
public class ConcreteFactoryA implements Factory {
    @Override
    public Product createProduct() {
        return new ConcreteProductA();
    }
}

// 具体工厂类B,用于创建具体产品类B的实例
public class ConcreteFactoryB implements Factory {
    @Override
    public Product createProduct() {
        return new ConcreteProductB();
    }
}

客户端代码

现在,我们可以在客户端代码中使用工厂来创建产品对象,而不需要关心具体的产品类:

public class Client {
    public static void main(String[] args) {
        // 创建工厂A,并使用它创建具体产品A的实例
        Factory factoryA = new ConcreteFactoryA();
        Product productA = factoryA.createProduct();
        productA.operation();

        // 创建工厂B,并使用它创建具体产品B的实例
        Factory factoryB = new ConcreteFactoryB();
        Product productB = factoryB.createProduct();
        productB.operation();
    }
}

示例说明

  • 客户端代码只与工厂接口和产品接口打交道,不直接与具体产品类耦合,从而实现了解耦。
  • 如果要添加新的产品,只需创建一个新的具体产品类和一个对应的具体工厂类即可,无需修改现有的代码,符合开闭原则。
  • 工厂模式提供了一种灵活的方法来创建对象,可以根据具体的需求选择使用哪个具体工厂来创建产品对象。