2009-09-09 95 views
0

我正在写一个将作为守护进程运行的应用程序。 UI将通过TCP连接到它。现在,有一个名为UiTcpInterface的类将处理UI和此守护程序之间的所有通信。如何实现“单实例”式设计?

现在,我面临的问题是确保只有一个UiTcpInterface的实例。什么是最好的方法来做到这一点?目前,我认为有两种方法:

  1. 这是典型的单件模式:使构造私有,并且该类UiTcpInterface
  2. 提供静态instance()方法实现所有功能的UiTcpInterface静态成员。主要方法将确保完成所有初始化。

我应该遵循以下哪两项?你能否给我一个这两种方法的专业清单?

谢谢:)

+0

会同时连接多少个用户界面?你在使用线程吗? – slashmais 2009-09-09 08:44:05

+0

http://stackoverflow.com/questions/86582/singleton-how-should-it-be-used – 2009-09-09 09:11:37

+0

嗯,多个客户端将连接。我不知道我是否会使用线程。我使用Qt,很多需要线程的东西都是由信号和插槽来处理的 – jrharshath 2009-09-09 09:14:54

回答

0

我会选择来实现它,因为它会这么容易改变到非单身,如果你以后改变主意了第一种方式。

0

SingleTon更好,
您可以随时重置对象状态,序列化对象(不知道这是否工作在C++)。 单身人士对静态类别有其他好处。 我宁愿使用静态类方法来包装一般函数(如数学类)

0

实际上,这两者都不是主要关于单个实例,而是全局访问。 如果您需要单个实例,请确保管理需要它的模块 的代码将只创建一个实例并将其传递给它。
如果你想让代码执行它,我会建议一个实例计数器和一个在构造函数中检查它是唯一实例的断言。

1

我宁愿单身模式。一个论据是可测性。对于单元测试来说,它更简单从instance()返回一个模拟对象。另外,如果你有例如不同的实现或不再是单个对象,更改更容易。