工厂模式(Factory Pattern)
工厂模式(Factory Pattern)是一种创建型设计模式,它提供了一种创建对象的最佳方式,而无需向客户端暴露创建逻辑。 简单来说,工厂模式就是封装创建对象的代码,提供一个统一的接口来创建不同类型的对象。工厂模式的关键在于,将对象的实例化过程交给子类来完成,而不是在父类中直接实例化对象。由于子类可以根据需要重写父类的方法来创建对象,因此工厂模式实现了“开放-封闭”原则。
以下是一个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.");
}
}
public class Circle implements Shape {
@Override
public void draw() {
System.out.println("Inside Circle::draw() method.");
}
}
3.创建工厂类
public class ShapeFactory {
public 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;
}
}
4.测试
public class FactoryPatternDemo {
public static void main(String[] args) {
ShapeFactory shapeFactory = new ShapeFactory();
// 获取 Circle 的对象,并调用它的 draw 方法
Shape shape1 = shapeFactory.getShape("CIRCLE");
// 调用 Circle 的 draw 方法
shape1.draw();
// 获取 Rectangle 的对象,并调用它的 draw 方法
Shape shape2 = shapeFactory.getShape("RECTANGLE");
// 调用 Rectangle 的 draw 方法
shape2.draw();
// 获取 Square 的对象,并调用它的 draw 方法
Shape shape3 = shapeFactory.getShape("SQUARE");
// 调用 Square 的 draw 方法
shape3.draw();
}
}
输出结果:
Inside Circle::draw() method.
Inside Rectangle::draw() method.
Inside Square::draw() method.
通过工厂模式,我们可以通过工厂类创建对象,而无需直接从客户端调用构造函数。这种方法将实例化对象的过程封装在工厂方法中,并且根据指定的参数返回正确类型的对象。由于工厂方法为创建对象提供了一个接口,因此我们可以轻松地添加或更改类型的对象而不必更改客户端。
以上内容来自于chatgpt,特此记录,以便学习。