定义:定义一个用于创建对象的接口,让子类决定实例化哪个类
使用场景:在任何需要生成复杂对象的地方,使用new就可以完成创建的对象无需使用工厂模式
工厂模式的四个角色:抽象工厂、具体工厂、抽象产品类、具体产品类
在抽象工厂里定义生产方法,在具体工厂里定义具体要生产的产品
有时候可以利用反射机制和泛型简洁地来生产具体的产品对象,此时在抽象工厂里定义传入的参数为泛型的Class类,然后在具体工厂里使用反射机制加载产品的实例
多工厂模式:为每个产品创建独立的工厂,符合单一职责
反射工厂模式:使用反射来动态创建产品
工厂模式和Builder模式的区别就是,Builder模式是让用户参与产品的制作,让用户选择零件构造自己需要的产品,而工厂模式不需要用户参与产品的制作,用户只需要指定自己要什么产品,然后工厂就通过对应的工厂具体类去生产,或者利用反射动态生产用户需要的产品