Java 工厂模式
什么是工厂模式?
工厂模式是Java中最常用的设计模式之一,它属于创建型设计模式,提供了一种创建对象的最佳方式。在工厂模式中,我们不会直接使用new操作符来创建对象,而是使用一个工厂类来负责创建产品对象。这样做的好处是将对象的创建与使用分离,使系统更加灵活。
核心思想
工厂模式的核心思想是:定义一个创建对象的接口,让子类决定实例化哪一个类。
工厂模式的分类
工厂模式主要分为三种类型:
- 简单工厂 模式(Simple Factory Pattern)
- 工厂方法模式(Factory Method Pattern)
- 抽象工厂模式(Abstract Factory Pattern)
下面我们将逐一介绍这三种工厂模式。
简单工厂模式
简单工厂模式,也被称为静态工厂方法模式,它是由一个工厂类根据传入的参数,决定创建出哪一种产品类的实例。
实现步骤
- 创建一个接口或抽象类,定义产品的共同行为
- 创建具体产品类,实现接口或继承抽象类
- 创建工厂类,包含一个创建产品的方法
代码示例
// 步骤1:创建产品接口
interface Shape {
void draw();
}
// 步骤2:创建具体产品类
class Circle implements Shape {
@Override
public void draw() {
System.out.println("画一个圆形");
}
}
class Rectangle implements Shape {
@Override
public void draw() {
System.out.println("画一个矩形");
}
}
class Square implements Shape {
@Override
public void draw() {
System.out.println("画一个正方形");
}
}
// 步骤3:创建工厂类
class ShapeFactory {
// 使用getShape方法获取形状类型的对象
public static Shape getShape(String shapeType) {
if (shapeType == null) {
return null;
}
if (shapeType.equalsIgnoreCase("CIRCLE")) {
return new Circle();
} else if (shapeType.equalsIgnoreCase("RECTANGLE")) {
return new Rectangle();
} else if (shapeType.equalsIgnoreCase("SQUARE")) {
return new Square();
}
return null;
}
}
// 演示类
public class SimpleFactoryDemo {
public static void main(String[] args) {
// 获取Circle对象并调用draw方法
Shape circle = ShapeFactory.getShape("CIRCLE");
circle.draw();
// 获取Rectangle对象并调用draw方法
Shape rectangle = ShapeFactory.getShape("RECTANGLE");
rectangle.draw();
// 获取Square对象并调用draw方法
Shape square = ShapeFactory.getShape("SQUARE");
square.draw();
}
}
输出结果:
画一个圆形
画一个矩形
画一个正方形