简介
简单工厂模式(Simple Factory Pattern)属于创建型模式,是一种比较简单的工厂模式。简单工厂模式通过一个工厂类来创建不同类型的对象,而客户端只需要知道所需对象的类型即可,无需知道具体的创建过程。简单工厂模式将对象的创建过程与客户端分离,从而提高了系统的灵活性和扩展性。
设计思路
简单工厂模式包含三个角色:工厂类、抽象产品类和具体产品类。其中,工厂类负责创建不同类型的产品对象,抽象产品类定义了产品对象的公共接口,具体产品类实现了抽象产品类的接口,完成具体的业务逻辑。
下面以一个简单的示例来说明简单工厂模式的设计思路。
示例
假设我们要设计一个图形计算器,可以根据用户输入的指令来计算不同形状的图形的周长和面积。支持的图形包括圆形、正方形和矩形。
首先,我们定义一个抽象图形类 Shape,其中包含两个抽象方法:计算周长和计算面积。
代码语言:javascript复制public abstract class Shape {
public abstract double calculatePerimeter();
public abstract double calculateArea();
}
然后,定义三个具体图形类 Circle、Square 和 Rectangle,它们分别实现了抽象图形类 Shape 的两个抽象方法。
代码语言:javascript复制public class Circle extends Shape {
private double radius;
public Circle(double radius) {
this.radius = radius;
}
public double calculatePerimeter() {
return 2 * Math.PI * radius;
}
public double calculateArea() {
return Math.PI * radius * radius;
}
}
public class Square extends Shape {
private double side;
public Square(double side) {
this.side = side;
}
public double calculatePerimeter() {
return 4 * side;
}
public double calculateArea() {
return side * side;
}
}
public class Rectangle extends Shape {
private double width;
private double height;
public Rectangle(double width, double height) {
this.width = width;
this.height = height;
}
public double calculatePerimeter() {
return 2 * (width height);
}
public double calculateArea() {
return width * height;
}
}