在阅读“有效的Java”时,J.Bloch遇到了该语句
静态工厂的第五个优点是,编写包含该方法的类时,不需要存在返回对象的类。
是什么意思?有人可以举例说明吗?
答案 0 :(得分:2)
这意味着您的静态工厂方法的API可以返回一个接口类型,该接口类型的实现要到以后才能编写或生成。
例如:
public static MyInterface getMyInterfaceInstance() {
//load instance dynamically and return it.
}
在这种情况下,工厂方法在编译时仅需要存在MyInterface
接口。可以通过多种方式在运行时动态加载实际的实现,包括:
特别是,最后两个选项只是意味着可以将实现类写在不同的模块中(许多模块可以提供该接口的实现),并且这些实现类将在运行时被发现-这样就可以以便在实际实现类之前编写静态工厂方法。