简单工厂模式详解
简单工厂模式用来定义一个工厂类,它可以根据参数的不同返回不同类的实例,被创建的实例通常都具有共同的父类。因为在简单工厂模式中用于创建实例的方法是静态方法,因此简单工厂模式又被称为静态工厂方法模式,它属于类创建型模式。
简单工厂模式的要点在于,当我们需要什么,只需要传入一个正确的参数,就可以获取我们所需要的对象,而无需知道其创建细节。简单工厂模式结构比较简单,其核心是工厂类的设计,其机构如图所示:
在简单工厂模式结构图中包含如下几个角色。
- Factory(工厂角色):工厂角色即工厂类,它是简单共产模式的核心,负责实现所创建的所有产品实例的内部逻辑;工厂类可以被外界直接调用,创建所需的产品对象;在工厂类中提供了静态的工厂方法,它的返回类型为抽象产品类型。
- Product(抽象产品角色):它是工厂类所创建的所有对象的父类,封装了各种产品对象的公有方法,它的引入将提高系统的灵活性,使得在工厂类中只需定义一个通用的工厂方法,因为所有创建的具体产品对象都是其子类对象。
- ConcreteProduct(具体产品角色):它是简单工厂模式的创建目标,所有被创建的对象都充当这个角色的某个具体类的实例。每一个具体产品角色都继承了抽象产品角色,需要实现在抽象产品中声明的抽象方法。
下面来看一个汽车与工厂实例,具体代码如下:
/**
* 交通工具(简单工厂模式)
*/
public class SimpleFactoryPattern {
public static void main(String[] args) {
// 根据需要传入相关的交通工具名称,获取交通工具实例
Vehicle vehicle = Factory.produce("car");
vehicle.run();
}
}
/**
* 交通工具(抽象类)
*/
interface Vehicle{
void run();
}
/**
* 汽车(具体类)
*/
class Car implements Vehicle{
@Override
public void run() {
System.out.println("car run...");
}
}
/**
* 公交车(具体类)
*/
class Bus implements Vehicle{
@Override
public void <