什么时候用工厂模式:如果一个类的构造函数有很多参数,然后该类在很多地方被实例化成对象(每个对象实例化的参数不一样)。当需要修改构造函数的参数时,同时需要修改各个实例化的对象,这样会很麻烦
所以需要工厂提供统一的实例化对象(对象实例化的参数一样),而调用者只需告诉工厂需要什么即可
定义:定义一个创建产品对象的工厂类,这满足“创建与使用相分离”的特点。如果要创建的产品不多,只要一个工厂类就可以完成,这种模式就叫“简单工厂模式”
优点:
缺点:
应用场景:
对于产品种类相对较少的情况,考虑使用简单工厂模式。使用简单工厂模式的客户端只需要传入工厂类的参数,不需要关心如何创建对象的逻辑,可以很方便地创建所需产品
结构:
实现:
public class SimpleFactoryTest {
public static void main(String[] args) {
SimpleFactory.makeProduct(1).show(); // 具体产品1显示
}
}
// 抽象产品
interface Product {
public void show();
}
// 具体产品:Product1
class ConcreteProduct1 implements Product {
public void show() {
System.out.println("具体产品1显示");
}
}
// 具体产品:Product2
class ConcreteProduct2 implements Product {
public void show() {
System.out.println("具体产品2显示");
}
}
class SimpleFactory {
public static Product makeProduct(int productNumber) {
switch (productNumber) {
case 1:
return new ConcreteProduct1();
case 2:
return new ConcreteProduct2();
}
return null;
}
}