简单工厂模式

163 阅读1分钟

目的

将创建过程从客户端分离,在一定程度上降低耦合度,根据传入参数的不同创建不同的实例。

定义

简单工厂模式,又称为静态工厂方法模式,它属于类创建模式;创建一个类,根据传入的参数返回不同类的实例,这些实列类通常拥有共同的父类

结构

  • product:abstract作为要实例化类的共同父类
  • concreteProduct:实例化的具体类
  • Factory:创建实例的工厂

demo

product

public abstract class Product {
}

concreteProduct

public class ProductA extends Product {
}
public class ProductB extends Product {
}
  • 直接才能创建
public class Client {
    public static void main(String[] args) {
        String name = "A";
        Product product= null;
        if (name.equals("A")) {
            product = new ProductA();
        }else  if (name.equals("A")) {
            product = new ProductB();
        }else{
            throw new RuntimeException("illegal param");
        }
    }
}
  • 使用简单工厂模式 factory
public class Factory {
    public static  Product getInit(String name) {
        Product product= null;
        if (name.equals("A")) {
            product = new ProductA();
        }else  if (name.equals("A")) {
            product = new ProductB();
        }else{
            throw new RuntimeException("illegal param");
        }
        return product;
    }
}

client

public class Client {
    public static void main(String[] args) {
        String name = "A";
        Product product= Factory.getInit(name);
    }
}

对比以上两种创建方式,可以直接看出使用简单工厂模式可以有效的将对象创建的过程从client解耦出来。

优点

客户端只需要传入工厂所需的参数即可,无需知道创建内部的详细过程,一切细节都有工厂代为执行。

缺点

由于工厂创建对象时需要进行一系列的逻辑判断,所以当需要实例化的类别过多时就会对工厂造成一定的负荷,维护有一定复杂。

总结

简单工厂模式适用于客户端无需知道创建细节,只需要传入参数获取对象进行消费,并且工厂所需要实例化的类别不会很多的情况。