工厂模式是一种创建模式,因为此模式提供了更好的方法来创建对象。
  在工厂模式中,我们创建对象而不将创建逻辑暴露给客户端,增强了代码的隐蔽性。例如需要画出不同的颜色红、绿、蓝等,传入不同的参数实现不同颜色的绘制。

  • 定义Color接口
public interface Color {
    void draw();
}

-实现不同颜色的绘制函数

public class Red implements Color {
    @Override
    public void draw() {
        System.out.println("Into Red::draw()!");
    }
}

public class Green implements Color {
    @Override
    public void draw() {
        System.out.println("Into Green::draw()!");
    }
}

public class Blue implements Color {
    @Override
    public void draw() {
        System.out.println("Into Blue::draw()!");
    }
}
  • 工厂模式中的核心是通过getType()函数传入需要创建对象的参数类型,创建对应的对象。例如ColorFactroy类中,传入red参数,创建出Red对象。
public class ColorFactory {
    public Color getShape(String shapeType) {
        if (shapeType == null) return null;
        if (shapeType.equalsIgnoreCase("red")) {
            return new Red();
        } else if (shapeType.equalsIgnoreCase("green")) {
            return new Green();
        }else if (shapeType.equalsIgnoreCase("blue")) {
            return new Blue();
        } 
        return null;
    }
}
  • 测试
public static void main(String[] args) {
        ColorFactory colorFactory = new ColorFactory();
        Color red = colorFactory.getShape("red");
        red.draw();
        Color green = colorFactory.getShape("green");
        green.draw();
        Color blue = colorFactory.getShape("blue");
        blue.draw();
}
  • 运行结果
Into Red::draw()!
Into Green::draw()!
Into Blue::draw()!