简单工厂模式
定义
简单工厂模式(
Simple Factory Pattern
):又称为静态工厂方法(Static Factory Method
)模式,它属于类创建型模式。在简单工厂模式中,可以根据参数的不同返回不同类的实例。简单工厂模式专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类。
使用步骤
- 定义产品Product接口。
- 定义具体产品ConcreteProduct子类继承抽象类,并实现抽象类中的接口。
- 定义工厂Factory类,负责创建具体产品。
示例
产品
public interface Product {
void function();
}
具体产品A、B
public class ProductA implements Product {
@Override
public void fucntion() {
System.out.println("A产品的功能执行了");
}
}
public class ProductB implements Product {
@Override
public void fucntion() {
System.out.println("B产品的功能执行了");
}
}
工厂
public class ProductFactory {
public static Product createProduct(String type) {
switch (type) {
case "A":
return new ProdctA();
case "B":
return new ProductB();
default:
throw new RuntimeException("产品不存在");
}
}
}
进行调用
public class Client {
public static void main(String[] args) {
String type = "A";
Prodct product = ProductFactory.createProduct(type);
product.function();
}
}
如果我们不使用简单工厂模式,而是将所有的代码放在一个类,代码如下:
public class Client {
private static final String TYPE_A = "A";
private static final String TYPE_B = "B";
public static void main(String[] args) {
String type = "A";
if (Objects.equals(TYPE_A, type)) {
// A 产品
System.out.println("A产品的功能执行了");
} else if (Objects.equals(TYPE_B, type)) {
// B 产品
System.out.println("B产品的功能执行了");
} else {
throw new RuntimeException("产品不存在");
}
}
}
那么就会使得客户端代码极其庞大摒弃难以维护,如果需要新加产品,那么就必须在client中新加代码,这违反了开闭原则
和迪米特原则
。