定义
定义一个工厂类,它可以根据参数的不同返回不同类的实例,被创建的实例通常具有共同的父类。因为在简单工厂模式中用于创建实例的方法是静态(static)方法,因此简单工厂模式又被称为静态工厂方法(Static Factory Method)模式
,它属于类创建型模式。
UML图例
实例代码
// Product 抽象产品角色
abstract class Product {
// 所有产品的公共业务方法
public void methodSame(){}
// 声明抽象业务方法
public abstract void methodDiff();
}
// ConcreteProduct 具体产品角色
public class ConcreteProductA extends Product{
//业务方法
public void methodDiff() {
//业务方法的实现
}
}
public class ConcreteProductB extends Product{
//业务方法
public void methodDiff() {
//业务方法的实现
}
}
// Factory 工厂角色
public class Factory {
// 静态工厂方法
public static Product getProduct(String arg){
Product product = null;
if (arg.equalsIgnoreCase("A")){
product = new ConcreteProductA();
}else if(arg.equalsIgnoreCase("B")){
product = new ConcreteProductB();
}
return product;
}
}
- Factory:工厂类,它是简单工厂模式的核心,负责创建所有产品实例的内部逻辑,工厂类可以被外界直接调用,创建所需的产品对象。
- Product:抽象产品类,它是工厂类所创建所有对象的父类(或者接口)。封装了各种产品对象的公有方法,它的引入使得工厂类只需定义一个通用的工厂方法,因为所有创建的具体产品对象都是其子类(或者实现接口的实现类)。
- ConcreteProduct:具体产品类,它是简单工厂模式的最终创建目标,每一个具体产品类都继承(或实现)了抽象产品类。需要实现在抽象产品类中声明的抽象方法。