静态工厂方法(Spring)

Vin*_*nay 4 spring

使用静态工厂方法在Spring Framework中实例化bean的优点和用途是什么?

Var*_*rde 7

使用静态工厂方法进行bean实例化的优点不一定来自Spring,它只是一个IoC容器.

Effective Java Idiom#1提供静态工厂的一些建议与从构造函数创建对象相比具有以下优势:

  1. 为您的方法提供比构造函数更具表现力的名称.
  2. 您可以跳过实际的对象创建并提供代理.
  3. 您可以返回方法返回类型的子类型.

我发现这个成语的最大优点在于具有相似签名的命名方法.

例如,如果你有:

    Person {
    String name;
    String[] booksAuthored;
    //... constructors, getters, setters
  }
Run Code Online (Sandbox Code Playgroud)

然后你可以通过调用这些来创建实例:

Person joshTheProgrammer = Person.createByName("Joshua Bloch");
Run Code Online (Sandbox Code Playgroud)

要么

Person joshTheAuthor = Person.createByBookName("Effective Java");
Run Code Online (Sandbox Code Playgroud)

在使用构造函数时,你不能这样做,因为你只能有一个接受String的构造函数.