在VB6中是否可以实现Singleton设计模式?
目前我工作的遗留系统有很多IO由特定类的多个实例执行。希望清理所有这些实例并使IO仅由一个实例执行。这将允许我们为IO例程添加有意义的日志记录和监视。
答案 0 :(得分:3)
有很多方法可以做到这一点,这取决于这是一个具有不同dll或单个项目的多项目应用程序。
如果是单个项目并且有大量代码让您担心变质/破坏,那么我建议如下:
这样做的好处是您不必更改使用clsIOProvider类的地方的分数。他们很高兴地不知道对象现在实际上是一个单身人士。
如果从头开始编写一个项目,我会稍微改变一下,但作为一个重构的appraoch,我已经概述了应该运行良好。
答案 1 :(得分:2)
只需创建和使用对象的一个实例就足够了。你如何做到这取决于你的代码它做什么以及从哪里调用它。
在一个过程中,您可以在具有实例的全局模块中使用单个变量,也可以使用在首次使用时创建它的工厂函数。
如果它由多个进程共享,则会使事情变得复杂,但可以使用ActiveX EXE和运行对象表来完成。