有复活的单身设计模式吗?

时间:2011-12-13 12:47:13

标签: design-patterns singleton

我们必须控制一些硬件,由于驱动程序的限制,所有调用都来自同一个调用者对象,所以我实现为单例模式。

驱动程序可能会挂起,在这种情况下它必须被杀死并且应用程序将尝试再次启动它...所以我将单例修改为复活 - 抱歉我只是创造了这个术语,因为我不知道什么是正确的。
基本上它的生活方式是这样的:
不存在=>单身#1 => hang =>已杀死=>单身人士#2 ......

在代码审查期间,我的同事说他以前从未见过这样的单身人士,因为他明白单身人士是整个申请生涯中唯一的单身人士....

是否有这种“可复活的单身”设计模式?有什么陷阱我会注意到吗?

哦,我正在使用C#,虽然我更多地将其作为一般的OO设计主题......

1 个答案:

答案 0 :(得分:2)

单例模式在这里并不适用,因为你说自己需要创建更多的对象。

我建议你使用类似工厂模式的东西:

  • call factory.get()
  • 如果不存在任何对象,则创建一个新对象
  • 如果对象存在且有效,则将其返回
  • 如果某个对象存在并挂起,则将其删除并创建一个新对象

您实施工厂,以便一次只创建一个对象。