工厂模式

工厂模式的目的是提供一个通用的接口来创建对象,而不需要客户端了解具体的实现细节。该模式适用于需要动态生成对象的场景,如Web应用中的对象池管理。

在Java中实现工厂模式通常涉及到创建一个工厂类,该类负责创建其他类的实例。工厂模式主要用于创建对象的场景,特别是在对象的创建逻辑比较复杂时。下面将通过一个简单的例子来说明如何在Java中实现工厂模式。

简单工厂模式

简单工厂模式是最基本的工厂模式,它通过一个工厂类来返回不同类的实例。

1、定义产品接口,所有的产品类都将实现这个接口。

public interface Shape {
    void draw();
}

2、实现产品接口,实现这个接口的多个类。

public class Rectangle implements Shape {
    @Override
    public void draw() {
        System.out.println("Inside Rectangle::draw() method.");
    }
}

public class Square implements Shape {
    @Override
    public void draw() {
        System.out.println("Inside Square::draw() method.");
    }
}

3、创建一个工厂类,该类将基于给定的信息返回对应的产品对象。

public class ShapeFactory {
    // 使用 getShape 方法获取形状类型的对象
    public Shape getShape(String shapeType){
        if(shapeType == null){
            return null;
        }        
        if(shapeType.equalsIgnoreCase("RECTANGLE")){
            return new Rectangle();
        } else if(shapeType.equalsIgnoreCase("SQUARE")){
            return new Square();
        }        
        return null;
    }
}

4、使用工厂类来获取产品类的实例。

public class FactoryPatternDemo {
    public static void main(String[] args) {
        ShapeFactory shapeFactory = new ShapeFactory();
        // 获取 Rectangle 的对象,并调用它的 draw 方法
        Shape shape1 = shapeFactory.getShape("RECTANGLE");
        shape1.draw();
        // 获取 Square 的对象,并调用它的 draw 方法
        Shape shape2 = shapeFactory.getShape("SQUARE");
        shape2.draw();
    }
}