在 VB6 中是否可以实现单例设计模式?

目前我工作的遗留系统有大量的 IO 由特定类的多个实例执行。最好清理所有这些实例并让 IO 仅由一个实例执行。这将允许我们向 IO 例程添加有意义的日志记录和监控。

最佳答案

有很多方法可以做到这一点,这取决于这是具有不同 dll 的多项目应用程序还是单个项目。

如果它是单个项目并且您担心更改/破坏大量代码,那么我建议如下:

  • 给定一个到处实例化的类 clsIOProvider,在同一个项目中创建一个模块 modIOProvider。
  • 对于 clsIOProvider 中定义的每个方法/属性,在 modIOProvider 中创建相同的方法集。
  • 那些方法的实现,以及类的实例数据,应该从clsIOProvider克隆到modIOProvider。
  • clsIOProvider 中的所有方法和属性都应更改为转发到 modIOProvider 中的实现。该类不应再具有实例数据。
  • (可选)如果类需要使用构造函数和析构函数(初始化/终止),也将它们转发给 modIOProvider。在 modIOProvider 中添加单个实例计数器以跟踪实例数。当实例计数器从 0 变为 1 时运行初始化代码,当实例计数器从 1 变为 0 时运行终止代码。

  • 这样做的好处是您不必更改使用 clsIOProvider 类的地方的分数中的 coe。他们很高兴没有意识到对象现在实际上是一个单例。

    如果从头开始编写一个项目,我会做一些不同的事情,但是作为我概述的重构方法应该可以很好地工作。

    关于VB6 是否可以实现单例设计模式?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7257931/

    10-11 23:40