所以我在 OO 设计方面比较新,我想知道单例设计模式的使用。我已经阅读了一些关于为什么单身人士不好但仍然无法弄清楚我是否需要单身人士的文章。我想尽可能地避免它。
就我而言,我使用 OceanOptics Spectrometers,可以通过他们的 API 用 C++ 控制和查询。
我已将管理光谱仪的所有代码(发现它们、设置或获取参数、检索数据)放在一个类SpectrometerProxy
中。
我想知道这个类是否应该是单例。我觉得可能有几个理由可以证明它是合理的:
它管理硬件
无论光谱仪的数量是多少,都可以通过本课程进行控制和咨询
有一个特定的程序必须以精确的顺序完成,并且只有一次(打开光谱仪,检查一些变量,并在程序停止时关闭光谱仪)
然后,我不知道是否有比使其成为单例更好的方法来实现这个类。我想到的另一个解决方案是将它保留为普通类,但防止复制(通过声明复制构造函数和赋值运算符私有)并且只是将指针传递给需要它的类:它不会阻止创建多个SpectrometerProxy
我会喜欢避免这种情况。
我还想过将其全部设为静态,但随后它将依赖客户端代码以正确的顺序调用正确的静态成员函数(并且不要忘记正确关闭与光谱仪的连接),因此容易出错并且与 RAII 原则相反。
那么,单例是否可能是解决此问题的正确设计方法,还是应该排除它并寻找其他方法?