类允许客户端获取实例的正常方法是提供公共(public)构造函数。另一种方法是提供一个公共(public)静态工厂方法,它只是一个返回类实例的静态方法。使用静态工厂方法有什么优点和缺点?
最佳答案
《Effective Java》一书中的这一章对此进行了很好的解释:Consider Static Factory instead of Constructors 。它以您能理解的最佳方式解释了它们的所有优点和缺点。
仅引用书中的优点和缺点:
优点:
- 静态工厂方法的一个优点是,与构造函数不同,它们有名称。
- 静态工厂方法的第二个优点是,与构造函数不同,它们不需要在每次调用时创建一个新对象。
- 静态工厂方法的第三个优点是,与构造函数不同,它们可以返回其返回类型的任何子类型的对象。
- 静态工厂方法的第四个优点是它们减少了创建参数化类型实例的冗长性(这一点在 Java 7 中可以忽略)
缺点:
仅提供静态工厂方法的主要缺点是没有公共(public)或 protected 构造函数的类无法子类化
静态工厂方法的第二个缺点是它们不容易与其他静态方法区分开来。
您可以在我提供的链接中更详细地研究它们。
关于java - 考虑提供静态工厂方法而不是构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13046877/