在阅读“Effective Java”时,J.Bloch 遇到了这个声明静态工厂的第五个优点是在编写包含该方法的类时,返回对象的类不需要存在。这是什么意思?有人可以用一些例子来解释吗?
1 回答
阿晨1998
TA贡献2037条经验 获得超6个赞
这意味着您的静态工厂方法的 API 可以返回一个接口类型,该接口类型的实现将在以后编写或生成。
举个例子:
public static MyInterface getMyInterfaceInstance() { //load instance dynamically and return it. }
在这种情况下,工厂方法只需要在MyInterface
编译时接口存在。实际的实现可以在运行时以多种方式动态加载,包括:
创建代理对象
反射(运行时加载的可配置实现类名)
查找服务加载程序
特别是,最后两个选项仅仅意味着实现类可以写在不同的模块中(并且许多模块可以提供接口的实现),并且这些实现类将在运行时被发现 - 这使得静态成为可能工厂方法要写在实际实现类之前。
添加回答
举报
0/150
提交
取消