如果一个类 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]
那为什么还要提供呢,就是在必要时使用三,只要你能控制,不要到处滥用,那就没有什么问题。
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥20 需要帮我远程操控一下,运行一下我的那个代码,我觉得我无能为力了
- ¥20 有偿:在ubuntu上安装arduino以及其常用库文件。
- ¥15 请问用arcgis处理一些数据和图形,通常里面有一个根据点划泰森多边形的命令,直接划的弊端是只能执行一个完整的边界,但是我们有时候会用到需要在有很多边界内利用点来执行划泰森多边形的命令
- ¥30 在wave2foam中执行setWaveField时遇到了如下的浮点异常问题,请问该如何解决呢?
- ¥750 关于一道数论方面的问题,求解答!(关键词-数学方法)
- ¥200 csgo2的viewmatrix值是否还有别的获取方式
- ¥15 Stable Diffusion,用Ebsynth utility在视频选帧图重绘,第一步报错,蒙版和帧图没法生成,怎么处理啊
- ¥15 请把下列每一行代码完整地读懂并注释出来
- ¥15 寻找公式识别开发,自动识别整页文档、图像公式的软件
- ¥15 为什么eclipse不能再下载了?