Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 我如何实施一个;“单一实例”-喜欢设计吗?_C++_Design Patterns_Singleton - Fatal编程技术网

C++ 我如何实施一个;“单一实例”-喜欢设计吗?

C++ 我如何实施一个;“单一实例”-喜欢设计吗?,c++,design-patterns,singleton,C++,Design Patterns,Singleton,我正在编写一个将作为守护进程运行的应用程序。UI将通过TCP连接到它。现在,有一个名为uitcinterface的类,它将处理UI和这个守护进程之间的所有通信 现在,我面临的问题是确保只有一个uitcinterface实例。最好的方法是什么?目前,我想到了两种方法: 这是经典的单例模式:将构造函数设为私有,并为类提供一个静态的instance()方法UITCInterface 作为UITCInterface的静态成员实现所有功能。main方法将确保完成所有初始化 这两个我应该遵循哪一个?你能给我

我正在编写一个将作为守护进程运行的应用程序。UI将通过TCP连接到它。现在,有一个名为
uitcinterface
的类,它将处理UI和这个守护进程之间的所有通信

现在,我面临的问题是确保只有一个
uitcinterface
实例。最好的方法是什么?目前,我想到了两种方法:

  • 这是经典的单例模式:将构造函数设为私有,并为类提供一个静态的
    instance()
    方法
    UITCInterface
  • 作为
    UITCInterface
    的静态成员实现所有功能。main方法将确保完成所有初始化
  • 这两个我应该遵循哪一个?你能给我一份这两种方法的正反清单吗


    谢谢:)

    这已经讨论过很多次了





    这已经讨论了很多次了





    我会选择第一种实现它的方法,因为如果你以后改变主意,改用非单例会容易得多

    我会选择第一种方法来实现它,因为如果你以后改变主意的话,改用非单身会容易得多

    单身更好,
    您总是可以重置对象状态,序列化对象(不确定这在c++中是否有效)。 与静态类相比,singleton还有许多其他好处。 我更喜欢使用静态类方法包装一般函数(如数学类)

    单例更好,
    您总是可以重置对象状态,序列化对象(不确定这在c++中是否有效)。 与静态类相比,singleton还有许多其他好处。
    我更喜欢使用静态类方法包装一般函数(如数学类)

    实际上,这两种方法都不是关于单个实例的,而是关于全局访问的。 如果需要单个实例,请确保管理模块的代码 需要它将只创建一个实例并向下传递。

    如果您希望代码强制执行它,我建议在构造函数中使用实例计数器和断言来检查它是否是唯一的实例

    实际上,这两者都不是关于单个实例的,而是关于全局访问的。 如果需要单个实例,请确保管理模块的代码 需要它将只创建一个实例并向下传递。

    如果您希望代码强制执行它,我建议在构造函数中使用实例计数器和断言来检查它是否是唯一的实例

    我更喜欢单例模式。一个论点是可测试性。对于单元测试,它更容易,例如从instance()返回模拟对象。此外,如果您有不同的实现,或者不再是单个对象,那么更改会更容易。

    我更喜欢单例模式。一个论点是可测试性。对于单元测试,它更容易,例如从instance()返回模拟对象。此外,如果您有不同的实现,或者不再有单个对象,则更改会更容易。

    有多少UI将同时连接?你在使用线程吗?嗯,多个客户端将连接。我不知道我是否会使用线程。我使用的是Qt,很多需要线程的事情都是由信号和插槽处理的。有多少UI可以并发连接?你在使用线程吗?嗯,多个客户端将连接。我不知道我是否会使用线程。我使用的是Qt,线程所需的很多事情都是由信号和插槽处理的。这个API实现了您的想法-。你这么认为吗?这个API实现了你的想法-。你这样认为吗?