为了账号安全,请及时绑定邮箱和手机立即绑定

“静态工厂返回的对象不需要存在”是什么意思?

“静态工厂返回的对象不需要存在”是什么意思?

回首忆惘然 2022-01-12 09:58:19
在阅读“Effective Java”时,J.Bloch 遇到了这个声明静态工厂的第五个优点是在编写包含该方法的类时,返回对象的类不需要存在。这是什么意思?有人可以用一些例子来解释吗?
查看完整描述

1 回答

?
阿晨1998

TA贡献2037条经验 获得超6个赞

这意味着您的静态工厂方法的 API 可以返回一个接口类型,该接口类型的实现将在以后编写或生成。

举个例子:

public static MyInterface getMyInterfaceInstance() {
    //load instance dynamically and return it.
    }

在这种情况下,工厂方法只需要在MyInterface编译时接口存在。实际的实现可以在运行时以多种方式动态加载,包括:

  • 创建代理对象

  • 反射(运行时加载的可配置实现类名)

  • 查找服务加载程序

特别是,最后两个选项仅仅意味着实现类可以写在不同的模块中(并且许多模块可以提供接口的实现),并且这些实现类将在运行时被发现 - 这使得静态成为可能工厂方法要写在实际实现类之前。


查看完整回答
反对 回复 2022-01-12
  • 1 回答
  • 0 关注
  • 295 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信