工厂模式
工厂模式是类创建模式的一种,通常是工厂类来根据传入参数的不同来创建不同类的实例,工厂类创建类的实例,这些类通常是有一个公共的父类。
下面的这张图基本展示了这种关系
Dataformat创建
简单工厂模式实例
public class SimpleFactory {
public static Product getProduct(String className) throws IllegalAccessException, InstantiationException {
if (className.equals("ProductA")) {
return new ProductA();
} else if (className.equals("ProductB")) {
return new ProductB();
} else {
return null;
}
}
//通过反射创建对象
public static Product getProduct2(String className) throws ClassNotFoundException, IllegalAccessException, InstantiationException {
Class aClass = Class.forName(className);
return (Product) aClass.newInstance();
}
public static void main(String[] args) throws InstantiationException, IllegalAccessException, ClassNotFoundException {
Product pro = SimpleFactory.getProduct2("ProductA");
pro.print();
//pro.print();
}
}
abstract class Product{//父类
public void print() {
}
}
class ProductA extends Product{
public void print(){
System.out.println("A success build");
}
}
class ProductB extends Product{
public void print(){
System.out.println("B success build");
}
}
小结
工厂模式优点:实现对象创建和使用的分离,客户端人员只需要掌握如何使用而不用管对象是如何创建出来的。
工厂模式缺点:新增一个新产品就要修改工厂类创建实例时候的判断逻辑部分的代码。