我有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/

10-11 22:36