我有3个接口类IVideo , IAudio , IGPIO
和其他三个将实现这些接口的类:Video_impl , Audio_impl , GPIO_impl
。
到目前为止,事情很简单。
但是,然后,我希望所有这些对象都是单例的。这里是问题:
提取接口ISingleton
是一个好主意,以便Video_impl , Audio_impl , GPIO_impl
(或IVideo , IAudio , IGPIO
吗?)可以从其继承?
我正在考虑以以下方式实施它。推荐吗?我认为必须有更好的方法。
//Isingleton.hpp
template <class T>
class ISingleton
{
public:
virtual T *getInstance() = 0;
};
class IGPIO
{
public:
virtual int SelectAudioInput() = 0;
};
class GPIO_impl : public IGPIO, public ISingleton<IGPIO>
{
public:
IGPIO *getInstance();
int SelectAudioInput() ;
private:
IGPIO *instance;
};
最佳答案
我建议阅读Alexandrescu的“现代C ++设计”。在其中,他设计了一个完整的单例模板,并仔细考虑了许多问题,例如何时应销毁它,销毁后是否应复活,因为在销毁其他单例时需要使用它,以及所有这些好东西。
关于c++ - 将接口(interface)ISingleton抽象为基类,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1470605/