如果一个类 ClassA 日后要有不同的实现,那么我可以将 ClassA 中的接口提取出来之后放入一个 InterfaceA 中,然后通过“工厂模式”在工厂中通过读取配置文件(获取对 InterfaceA 的实现类),和反射生成 InterfaceA 的实例(应用中同时只能存在 InterfaceA 的一“种”实现)。
但是现在又要求 InterfaceA 的所有实现必须是 Singleton 。这样便产生了不和谐的地方:Singleton 的 getInstance 方法是 static 的,并且无法从 InterfaceA 中指定。也就是说我只能在工厂中通过调用 Singleton 的构造函数去生成其实例,这样一来,我只能将Singleton 的 Constructor 声明为 public 的。这样就产生了“不是单例”的可能。
如何解决这问题?

如何动态的创建 Singleton 实例
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
2条回答 默认 最新
- DreamZhong 2011-10-17 22:04关注
[quote]这个的确可以解燃眉之急。并且通常可以达到预期。但是我觉得这个并不是好的解决方案。因为通过反射所获得的 private 成员,并不应该被调用。也就是说,这些东西是只能看不能依赖使用的。 [/quote]
那为什么还要提供呢,就是在必要时使用三,只要你能控制,不要到处滥用,那就没有什么问题。
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报