Предположим, что для всех бизнес-объектов интерфейс предназначен для скрытия реализации.Шаблон PIMPL не используется.
class CNetworkManager : public IMyNetwork {...};
Все эти менеджеры являются синглетонами с такими методами, как:
NetworkManager.h
CNetworkManager* CNetworkManager::getInstance();
CNetworkManager* CNetworkManager::destroy();
Но NetworkManager.h не являетсяэкспорт.Таким образом, статические методы используются в
NetworkManagerFactory.h
class CMyNetworkFactory
{
public:
static IMyNetwork* getInstance();
static void destroy();
};
NetworkManagerFactory.cpp
IMyNetwork* CMyNetworkFactory::getInstance()
{
return CNetworkManager::getInstance();
}
Но все фабрики должны использовать одинаковые имена.Таким образом, я добавил
шаблон ISingletonFactory.h
template <class Factory, class Interface>
class CSingletonFactory
{
public:
~CSingletonFactory() {}
static Interface* getInstance() = delete;
static void destroy() = delete;
};
и переработал NetworkManagerFactory.h в CRTP
class CMyNetworkFactory : public CSingletonFactory<CMyNetworkFactory, IMyNetwork>
{
public:
static IMyNetwork* getInstance();
static void destroy();
};
Вопросы: используется ли static вместе с удалить как можно хуже или обычное искусство?